1

我有一个具有以下布局的故事板。

  1. 标签栏控制器
  2. --> 导航控制器
  3. ----> 表视图控制器
  4. ----> 表视图控制器
  5. ----> TabBarController(在推送时隐藏底栏)
  6. ------> TableViewContrller(设置标题)

我将 4 和 5 推到导航控制器 2 上。 5 推时隐藏底栏,当 6 可见时,因为它的选项卡栏项目被选中,视图控制器 6 上设置的标题在导航栏中不可见

我的问题是,从界面生成器(XCode5)设置它的最佳方法是什么?

我还尝试将导航项添加到视图控制器 6 并在那里设置标题,但这没有效果。

在写这篇文章时,我意识到视图控制器 6 永远不会被推送到导航控制器堆栈上,这就是它没有导航项的原因。当意识到在视图控制器 3 上设置导航项会产生我预期的效果时,我正要放弃这个问题。这是在切换到不同的选项卡时切换导航栏标题。

这当然是因为它们是完全不同的导航控制器。反正有没有用我的结构来模拟这种行为?如果不能,你能建议一种替代方法吗?

4

1 回答 1

5

您不应该将标签栏控制器推到导航控制器上。

pushViewController:animated:的 UINavigationBar 类参考说:

参数
viewController
被压入堆栈的视图控制器。此对象不能是选项卡栏控制器的实例,并且它不能已经在导航堆栈上。

我建议您以模态方式呈现该标签栏控制器而不是推送它,您将解决这两个问题。要添加带有标题的导航栏,请将视图控制器 #6 嵌入到导航控制器中,然后在您将呈现的此选项卡栏控制器中。

所以你的故事板看起来像这样:

UITabBarController
+ (tab) UINavigationController
        + (push) UITableViewController
        + (push) UITableViewController
        + (modal) UITabBarController
                  + (tab) UINavigationController
                          + (push) UITableViewController (set title)
于 2013-09-24T10:20:56.700 回答