转换到新的视图控制器

时间:2015-12-05 10:12:30

标签: ios uiviewcontroller

因此,在验证用户登录详细信息后调用此代码:

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与另外两个ViewControllers

有关系

我的问题是:

有没有比删除View Controllers所拥有的PostLoginTabBarController更好的方法,然后在completeLogin()方法中添加新的实例化的方法?我这样做的原因是因为如果我在显示PostLoginTabBarController时切断了PostLoginTabBarController之间的关系,它会显示黑屏,但是如果我不切断关系那么就可以了。

以下是切断关系时的示例:

enter image description here

当我不这样做时:

enter image description here

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用setViewControllers(_ viewControllers: [UIViewController]?, animated animated: Bool)代替

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