首页 文章

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

提问于
浏览
0

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

  • TabBarController

    • NavigationController

  • ----> TableViewController

  • ----> TableViewController

  • ----> TabBarController(在推送时隐藏底栏)

  • ------> TableViewContrller(设置 Headers )

我将4和5推到导航控制器2.当按下时5隐藏底栏,当6看到因为它的标签栏项目被选中,视图控制器6上的 Headers 集在导航栏中不可见

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

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

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

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

1 回答

  • 4

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

    pushViewController:animated:的UINavigationBar类引用说:

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

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

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

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

相关问题