首页 文章

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

提问于
浏览
2

我正在尝试完成我的第一个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问题,但是标签栏仍然显示在底部,我在表格视图和最终视图中得到一个额外的导航栏(见下文 - 对应上面的) . 按下顶部的“<Back”按钮将我带回到第一个视图(错误),按下第二个“<Back”按钮将我带回到表视图(正确)

问题:

  • 我在这里做错了什么???

  • 视图何时应具有NavigationController?是否可以在整个故事板中使用一个或者我应该有更多 .

  • 如果我在标签栏后放置导航控制器,则底部标签栏会保留 . 我怎么摆脱它?

  • 我应该避免标签栏吗?

enter image description here

UPDATE:

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

1 回答

  • 1

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

    无论嵌入在navigationController中的哪一个,都应该调用_VT_ ViewWillAppear 的TableVC .

    • 避免标签栏与否以及故事板的单个导航控制器与应用程序设计相关 .

相关问题