移动到下一个 UIViewController 时保留 UINavigationController 但隐藏 UITabBarController
Posted
技术标签:
【中文标题】移动到下一个 UIViewController 时保留 UINavigationController 但隐藏 UITabBarController【英文标题】:Keep the UINavigationController while moving to next UIViewController but hide UITabBarController 【发布时间】:2016-02-07 07:37:30 【问题描述】:我有一个嵌入在UINavigationController
和UITabBarController
中的UITableViewController
。
当我选择一行时,我想在UINavigationController
中打开我的UIViewController
,而不是在UITabBarController
中。
当我从单元格创建segue
到Interface Builder
中的UIViewController
时,我选择Show (eg. Push)
。
问题在于它还保留了UITabBarController
。
然后我尝试了其他类型的segue,但没有一个显示UINavigationController
。
我想过在viewDidLoad()
中添加self.tabBarController?.tabBar.hidden = true
并覆盖willMoveToParentViewController
:
override func willMoveToParentViewController(parent: UIViewController?)
super.willMoveToParentViewController(parent)
if parent == nil
self.tabBarController?.tabBar.hidden = false
它工作正常,除非我进行驱动转换(从边缘平移返回父视图控制器)。
如何正确地做到这一点?
【问题讨论】:
【参考方案1】:UIViewController 有一个名为hidesBottomBarWhenPushed
的属性,它将完全按照您的意愿进行操作。
只需设置tableViewController.hidesBottomBarWhenPushed = true
,您就可以开始了!
见Apple's documentation
编辑:如果您使用 Interface Builder 构建视图,实际上有一个可以单击的复选框,因此您不必以编程方式设置它。
【讨论】:
是的,我刚刚看到了。调用它的最佳方法是在父视图控制器中覆盖prepareForSegue
。例如在孩子的ViewDidLoad
中调用它不起作用。谢谢。
哦——如果你在 Interface Builder 中有视图,属性检查器中实际上有一个复选框。选择视图控制器,您可以在此屏幕截图中看到复选框:imgur.com/wBHDoca以上是关于移动到下一个 UIViewController 时保留 UINavigationController 但隐藏 UITabBarController的主要内容,如果未能解决你的问题,请参考以下文章
当使用 Swift 出现键盘时如何向上移动 UIViewController 的内容