选项卡栏不显示在导航控制器内的视图控制器上

问题描述:

我在以编程方式打开新的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) 
+0

你的意思是这样吗?让tabBarController = self.storyboard?.instantiateViewController(withIdentifier:“TabBarController”) self.present(tabBarController!,animated:true,completion:nil) –

+0

或类似的东西: 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,动画:真,完成:无) –

+0

所以现在我有:让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 –

好吧,我设法解决这个问题是这样的:

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 

感谢您的帮助!