переход между UIViewController из ящика навигации

#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. можно ли установить высоту панели инструментов?