UINavigationController 内的 TUITabBarController 问题

Posted

技术标签:

【中文标题】UINavigationController 内的 TUITabBarController 问题【英文标题】:TUITabBarController inside UINavigationController problems 【发布时间】:2014-07-02 14:28:28 【问题描述】:

我想将UITabBarController 添加为我的 UINavigation 控制器的根视图。这样做的目的是我想进行与 Facebook 应用程序类似的导航:然后用户在“联系人”选项卡上选择联系人 - 带有用户详细信息的推送视图没有 TabBar。

所以,我有导航控制器、标签栏作为根视图,或者它并在 UITabBarController 中耦合 TableViewControllers。

我有两个主要问题:

    我无法为标签栏根视图的导航栏分配标题。如果我打开联系方式,我有导航栏标题,没有标签栏(如我所愿)。但如果我选择联系人或收藏夹 - 这些视图的导航栏标题为空。我尝试在 viewDidLoad 和 viewDidApper 上设置它,但没有成功 更糟糕的问题。当我按收藏夹表格视图时,插图已损坏。第一个单元格位于导航栏下方。第一次加载的表格视图(在我的情况下为联系人)正确显示。两个 TableView 的调整滚动视图插图为 YES

更新:

解决方案故事板(注意属性“Hide Bottom Bar on the Push”切换为 YES)。

【问题讨论】:

你能不能反过来安排这些,标签栏 vc 包含导航 vcs 的地方?这是迄今为止更常见的安排。 我想在推送时隐藏标签栏,但 JaanusSiim 回答了如何做到这一点 【参考方案1】:

我也在为 UITabBarController + UINavigationController 问题而苦苦挣扎。当 UITabBarController 被 UINavigationController 包含时,内容插入的行为非常奇怪。

我建议在 UITabBarController 中使用导航控制器,并在推送下一个控制器时,将该控制器上的 'hidesBottomBarWhenPushed' 设置为 YES。

这也可以解决设置导航栏标题的问题,因为导航控制器更接近视图控制器。您可以只使用 self.navigationItem。

如果您将其保留为当前设置 - UINavigationController 中包含的 UITabController,那么您需要修改控制器 tabBarController (self.tabBarController.navigationItem) 上的 navigationItem。请注意,它的最佳位置是在 UITabBarController 中包含的每个控制器的视图控制器“viewWillAppear”中,因为它们共享一个导航项。

【讨论】:

以上是关于UINavigationController 内的 TUITabBarController 问题的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 内的 UIPageController 从顶部偏移?

在 UINavigationController 内的 UIViewController 内加载 UITableViewController

UIPopover 导航按钮内的 UINavigationController 未显示

UINavigationController 内的 TUITabBarController 问题

UITabBarController 内的 UINavigationController 视觉问题

UINavigationController navBar 内的 UIPageViewController 中的 UITableViewController 不反弹