Я использую ниже код, чтобы попытаться изменить отображаемое ViewController в UINavigationController:UINavigationController topViewController не отображается
var mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
var navigationController:UINavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("navController") as UINavigationController
var homeViewController: UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeView") as UIViewController
navigationController.popViewControllerAnimated(false)
navigationController.pushViewController(homeViewController, animated: false)
var topController = navigationController.topViewController as UIViewController
println("homeview id:\(homeViewController.restorationIdentifier)")
println("topview id: \(topController.restorationIdentifier)")
здесь раскадровка:
Первый вопрос: Почему когда Я удаляю вызов функции popViewControllerAnimated в этом примере, верхний вид все еще является LoginView, даже если я нажал HomeView? (Не должен ли он быть последним нажатым контроллером вида?)
Второй вопрос: Когда я сохраняю вызов функции popViewControllerAnimated, я получил правый верхний вид (мой topView теперь HomeView, как ожидалось), но отображаемый ViewController на экран по-прежнему является loginView. Почему новый TopViewController не отображается?
спасибо
Благодаря это помогло много. Знаете ли вы, нужно ли использовать popViewControllerAnimated() между 2 pushViewController() одного и того же viewController? (Чтобы не иметь 2 экземпляра одного и того же viewController в стеке UINavigation?) – grll
@grll, да, если вам нужен только один экземпляр, тогда вам нужно вытащить старый, прежде чем вы нажмете еще один. – rdelmar