Tab Bar子viewWillAppear不会触发,添加NavigationController会给出两个导航栏

时间:2015-08-17 03:32:31

标签: ios uinavigationcontroller uitabbarcontroller

我正在尝试完成我的第一个iOS应用程序。

我的故事板布局是这样的:

Navigation Controller
'-> View Controller
    '->Tab Bar Controller
       |->Table View Controller
       |  '->View Controller
       '->Table View Controller
          '->View Controller

所有视图都以推送(非模态)显示,因此需要返回导航。问题是当我从最后一个View返回到Table View时,viewWillAppear没有触发。所以我添加了导航控制器:

Navigation Controller
'-> View Controller
    '->Tab Bar Controller
       |->Navigation Controller
       |  '->Table View Controller
       |     '->View Controller*
       '->Navigation Controller
          '->Table View Controller
             '->View Controller

这修复了viewWillAppear问题,但是标签栏仍然显示在底部,我在表格视图和最终视图中得到一个额外的导航栏(见下文 - 对应*上面的*)。按顶部"<回到"按钮将我带回到第一个视图(错误),按下第二个"<回到"按钮带我回到表格视图(正确)

问题:

  • 我在这里做错了什么???
  • 视图何时应具有NavigationController?是否可以在整个故事板中使用一个或者我应该有更多。
  • 如果我在标签栏后放置导航控制器,则会保留底部标签栏。我该如何摆脱它?
  • 我应该避开标签栏吗?

enter image description here

更新

这很奇怪。如果我重新创建故事板,我可以将其缩小到初始视图控制器/导航控制器对。不知道可能是什么问题,因为将这些问题换成新的一对解决了它。

1 个答案:

答案 0 :(得分:1)

  • 来自Apple UITabbarController Docs

      

    您可以使用导航控制器或自定义视图控制器作为选项卡的根视图控制器。如果根视图控制器是导航控制器,则选项卡栏控制器会进一步调整显示的导航内容的大小,使其不与选项卡栏重叠。

  • 无论嵌入在navigationController中,都应调用
  • ViewWillAppear的TableVC。

  • 避免使用标签栏和故事板的单个导航控制器与应用程序设计相关。