返回初始视图控制器时,标签栏消失

时间:2018-04-04 12:02:47

标签: swift uinavigationcontroller tabbarcontroller rootviewcontroller

我有2个视图控制器,然后标签栏控制器连接到3个导航控制器,每个导航连接到多个视图。 从其中一个连接到其中一个导航控制器的视图,我想再次回到开始屏幕,这两行很好:

let loginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController")
            UIApplication.shared.keyWindow?.rootViewController = loginViewController

但是在我这样做并希望再次导航到标签栏后,它从视图中消失了。我用它来导航到标签栏:

let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let viewTabController = self.storyboard?.instantiateViewController(withIdentifier :"MainTabBarController") as! MainTabBarController
        viewTabController.selectedIndex = 1

        appDelegate.window?.rootViewController = viewTabController

提前致谢。

1 个答案:

答案 0 :(得分:0)

当您使用instantiateViewController时,您正在内存中创建视图控制器的新实例,而在您的情况下不需要,您之前已创建它们。所以你可以解散你的tabBar并返回到这样的第一个屏幕(初始viewcontroller必须嵌入到导航控制器中):

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let navigationController = appDelegate.window?.rootViewController as! UINavigationController
navigationController.dismiss(animated: true, completion: nil)

要返回tabBar,您可以将其实例保存在您的应用代理中并展示它,或使用storyboard segue以模态方式呈现它 :)