从界面构建器设置子选项卡栏控制器的导航栏标题

时间:2013-09-24 10:05:59

标签: ios objective-c uinavigationcontroller uitabbarcontroller uistoryboard

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

  1. TabBarController
  2. - > NavigationController
  3. ----> TableViewController
  4. ----> TableViewController
  5. ----> TabBarController(在推送时隐藏底栏)
  6. ------> TableViewContrller(设置标题)
  7. 我推4& 5,导航控制器2. 5,当按下时隐藏底栏,当6看到因为它的标签栏项目被选中,视图控制器6上的标题设置在导航栏中不可见

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

    我还尝试添加一个导航项来查看控制器6并在那里设置标题,但这没有效果。

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

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

1 个答案:

答案 0 :(得分:4)

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

pushViewController:animated:的UINavigationBar类引用说:

  

<强>参数
  的viewController
  推入堆栈的视图控制器。此对象不能是标签栏控制器的实例,并且它必须不在导航堆栈中。

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

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

UITabBarController
+ (tab) UINavigationController
        + (push) UITableViewController
        + (push) UITableViewController
        + (modal) UITabBarController
                  + (tab) UINavigationController
                          + (push) UITableViewController (set title)