#ios #swift3 #cosmicmind
#iOS #swift3 #космический разум
Вопрос:
Я использую Swift 3. Я искал об этом и нашел решение
navigationDrawerController?.TransitionFromRootViewController
но когда я использовал эту строку, она говорит TransitionFromRootViewController
, что это не функция.
Итак, я попытался использовать
navigationDrawerController?.transition(from: RootViewController(), to: destViewController(), duration: 0.2, options: .transitionCrossDissolve, animations: nil, completion: nil)
но он показывает ошибку, что:
«дочерний контроллер представления должен иметь общий родительский контроллер представления при вызове transitionfrom view controller»
Кто-нибудь может мне помочь, пожалуйста? Если кто-то может указать пример навигационного ящика с переключением, было бы здорово.
Ответ №1:
Вот решение, которое я опубликовал в примере проекта NavigationDrawerController в каталоге programmatic, материал 2.1.2.
Он показывает, как переходить с несколькими контроллерами навигации и сам по себе.
import UIKit
import Material
class LeftViewController: UIViewController {
private var transitionButton: FlatButton!
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.blue.base
prepareTransitionButton()
}
@objc
internal func handleTransitionButton() {
// Transition the entire NavigationDrawer rootViewController.
// navigationDrawerController?.transition(to: TransitionedViewController(), completion: closeNavigationDrawer)
// Transition the ToolbarController rootViewController that is in the
// NavigationDrawer rootViewController.
(navigationDrawerController?.rootViewController as? ToolbarController)?.transition(to: TransitionedViewController(), completion: closeNavigationDrawer)
}
internal func closeNavigationDrawer(result: Bool) {
navigationDrawerController?.closeLeftView()
}
private func prepareTransitionButton() {
transitionButton = FlatButton(title: "Transition VC", titleColor: Color.white)
transitionButton.addTarget(self, action: #selector(handleTransitionButton), for: .touchUpInside)
view.layout(transitionButton).horizontally().center()
}
}
Вы можете найти ссылку на обсуждение в выпуске GitHub-546
Всего наилучшего!
Комментарии:
1. Спасибо за все
2. если я использую контроллер панели инструментов, то он работает, но если я использую контроллер навигации вместо контроллера панели инструментов, то он не работает
3. когда я отредактировал пример проекта и использовал в нем контроллер навигации, приложение завершило работу с сообщением «Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘Родительский контроллер представления использует устаревшее сдерживание при вызове -[UIViewController transitionFromViewController:toWiewController:продолжительность: параметры: анимация: завершение:]’ »
4. Для контроллера навигации вы должны использовать обычный
push
API. Извините, это единственное исключение.5. можно ли установить высоту панели инструментов?