【问题标题】:View controller inside tab bar controller在标签栏控制器内查看控制器
【发布时间】:2018-07-19 01:23:10
【问题描述】:

您好,我有带有 5 个元素的标签栏控制器。当我按下最后一个按钮时,有一堆按钮需要显示另一个视图控制器,然后当我第二次按下该选项卡栏按钮时,它需要恢复其第一个条件(一堆按钮),它就像一个导航器。我尝试使用以下代码:

let destinationVC = self.storyboard?.instantiateViewController(withIdentifier: "third") as? ThirdVC
self.tabBarController?.present(destinationVC!, animated: true, completion: nil)

但是,视图控制器出现在一个新屏幕中,而我的标签栏控制器不见了。如何在标签栏控制器上方打开我的视图控制器?有可能吗?

【问题讨论】:

  • 试试self.tabBarController?.navigationController?.present(destinationVC!, animated: true, completion: nil)
  • 不,它对我不起作用,我需要在标签栏内添加导航控制器吗?
  • 要么你可以简单地改变tabBarcontroller的当前vc tabBarController.addChildViewController(vc)

标签: ios swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

尝试获取标签栏视图控制器的引用:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "tabBarcontroller") as! UITabBarController
viewcontroller.selectedIndex = indexofyourvc i.e 0,1 etc

并使用导航控制器推送:

self.navController?.pushViewController(viewController, animated: true )

【讨论】:

  • 我应该从情节提要中添加导航控制器,因为它现在没有做任何事情吗?
  • 是的,从情节提要添加导航控制器,或者您可以参考根视图控制器作为 let navController = UIApplication.shared.keyWindow?.rootViewController 作为? UINavigationController 。如果它适合您的项目
  • 我已经添加了它,并且它可以进行一些更改我不明白为什么您要添加选定的索引内容,因为我需要导航的页面是另一个视图控制器。我更改了您的代码let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let viewController = mainStoryboard.instantiateViewController(withIdentifier: "third") as! ThirdVC //viewController.selectedIndex = 4 self.navigationController?.pushViewController(viewController, animated: true)
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多