选项卡栏不显示在导航控制器内的视图控制器上
问题描述:
我在以编程方式打开新的View Controller时遇到此问题。选项卡栏不显示在导航控制器内的视图控制器上
let controller = self.storyboard?.instantiateViewController(withIdentifier: "overViewScreen") as! OverviewViewController
controller.user = self.userObject
let navigationController = UINavigationController(rootViewController: controller)
self.present(navigationController, animated: true, completion: nil)
我的项目结构: storyboard
在我的故事板标签栏显示到视图控制器(上右表),但是当我运行的应用程序,它看起来像这样: enter image description here
我希望你们能帮助我! 谢谢。
答
您正在介绍无控制器栏的NavigationController。你需要提供TabBarController。
给你TabBarController标识符和实例化它们就像你用控制器
代码注释完成:
let tabVC = UIStoryboard(name: "NameOfYourStoryboard", bundle: Bundle.main).instantiateInitialViewController() as! UITabBarController
let navVc = tabVC.viewControllers.first as! UINavigationController
let vc = navVc.viewControllers.first as! OverviewViewController
vc.incorrectAuthorization = SettingsAuthorizationMethod.fingerprint
vc.user = self.userObject
present(navController, animated: true, completion: nil)
答
好吧,我设法解决这个问题是这样的:
let vc = self.storyboard?.instantiateViewController(withIdentifier: "TabBarController") as! TabBarController
vc.user = self.userObject
let nvc = UINavigationController(rootViewController: vc)
self.present(nvc, animated: true, completion: nil)
我做了一个单独的控制器类“TabBarController”,并为此类添加了一个属性“user”。在我的“OverViewController”中,我可以得到以下属性:
let tabBar: TabBarController = tabBarController as! TabBarController
user = tabBar.user
感谢您的帮助!
你的意思是这样吗?让tabBarController = self.storyboard?.instantiateViewController(withIdentifier:“TabBarController”) self.present(tabBarController!,animated:true,completion:nil) –
或类似的东西: let tabVC = UIStoryboard(name:“NameOfYourStoryboard”, bundle:Bundle.main).instantiateInitialViewController()as! UITabBarController let navVc = tabVC.viewControllers.first as! UINavigationController let vc = navVc.viewControllers.first as! LoginViewController vc.incorrectAuthorization = SettingsAuthorizationMethod.fingerprint vc.user = self.userObject 存在(navController,动画:真,完成:无) –
所以现在我有:让tabBarController = self.storyboard .instantiateInitialViewController()的?! UITabBarController 让navVc = tabBarController.childViewControllers.first as! UINavigationController let vc = navVc.childViewControllers.first as! OverviewViewController vc.user = self.userObject self.present(navVc,animated:true,completion:nil)。错误:无法将LoginViewController投射到UITabBarController –