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


提前致谢。

最佳答案

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

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


要带回tabBar,您可以将其实例保存在您的应用程序委托中并进行呈现,也可以使用情节提要segue以模态形式进行呈现
:)

关于swift - 回到初始 View Controller 时,选项卡栏消失了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49650510/

10-13 09:04