0

我有 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

提前致谢。

4

1 回答 1

0

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

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

为了带回来tabBar,您可以将其实例保存在您的应用程序委托中并呈现它,或者使用情节提要 segue 以模态方式呈现它:)

于 2018-04-04T12:12:22.490 回答