为什么在导航控制器中嵌入视图控制器,然后在标签栏控制器中将导航栏附加到标签栏控制器?

时间:2017-02-17 04:46:50

标签: ios uinavigationcontroller storyboard

当我第一次为故事板中正在处理的应用程序创建基础布局时,我分两步完成:

  1. 选择了我的View Controller并使用了Editor-> Embed In-> Navigation Controller。
  2. 再次选择我的视图控制器并使用编辑器 - >嵌入式 - >标签栏控制器。
  3. 这是最终的布局:

    问题1:为什么这些步骤会创建如此奇怪的布局?

    在这个奇怪的布局中,似乎暗示导航控制器作为其父级附加到标签栏控制器,我可以获得导航项目在应用程序中显示的唯一方法(在视图控制器控制的视图中)右)是将它们放在标签栏控制器场景的导航栏中。

    然而,这会产生各种问题,包括无法在我的View Controller文件中为自定义视图创建IBOutlet,我将其拖动到Tab Bar Controller场景中的标题视图槽中。同时,将任何内容拖动到View Controller场景中的导航栏只会使其在运行时不会显示在应用程序中。

    问题2:如何修复此布局,以便我可以控制 - 从导航项拖动到我的View Controller文件中?或者一切都是正确的,我只是想强迫一些我不应该做的事情? (我的目的是能够在我的View Controller代码中设置自定义标题视图的文本。)

1 个答案:

答案 0 :(得分:1)

很明显,如果您想将MyViewController嵌入NavigationController,那么您需要更改第二步,并需要将NavigationController嵌入Tab Bar Controller

  1. 已选择MyViewController并使用Editor->Embed In->Navigation Controller
  2. 已选择NavigationController嵌入MyViewController并使用Editor->Embed In->Tab Bar Controller
  3. 应该是这样的。

    enter image description here

    注意:仅当您希望MyViewControllernavigationController其他方式执行推送操作时,才需要将TabBarItem嵌入MyViewController明智地只需将MyViewController嵌入TabBarController,无需将其嵌入NavigationController