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