2015-12-05 4 views
0

Так что этот кусок кода вызывается после аутентификации пользователей регистрационные данные:Переход на новый контроллер вида

func completeLogin() { 
     dispatch_async(dispatch_get_main_queue(), { 
      let tabBarController = self.storyboard!.instantiateViewControllerWithIdentifier("PostLoginTabBarController") as! UITabBarController 
      let tableViewController = self.storyboard!.instantiateViewControllerWithIdentifier("InformationTableViewController") as! InformationTableViewController 
      let tableViewNavController = UINavigationController(rootViewController: tableViewController) 
      tabBarController.viewControllers?.removeAll() 
      tabBarController.viewControllers?.append(tableViewNavController) 
      self.presentViewController(tabBarController, animated: true, completion: nil) 
     }) 
    } 

В моей раскадровки:

enter image description here

У меня есть PostLoginTabBarController, который имеет отношение к 2 другим ViewControllers

Мой вопрос:

Есть ли лучший способ, чем удаление всех View Controllers что PostLoginTabBarController имеет, а затем добавить новые экземпляры из них в методе completeLogin()? Причина, по которой я делаю это, состоит в том, что если я разорву связь между PostLoginTabBarController, когда представлен PostLoginTabBarController, он показывает черный экран, но если я не разорву связь, тогда это нормально.

Вот пример, когда я разорвать отношения:

enter image description here

И когда я не делаю

enter image description here

ответ

3

Вы пробовали использовать setViewControllers(_ viewControllers: [UIViewController]?, animated animated: Bool) вместо

tabBarController.viewControllers?.removeAll() 
tabBarController.viewControllers?.append(tableViewNavController) 
+0

О, да, теперь это работает, мне даже не нужно подключать контроллеры представления к контроллеру панели вкладок – YellowPillow

Смежные вопросы