UINavigationControllers是否等同于使用导航栏手动连接每个VC?

时间:2018-02-21 19:13:33

标签: ios uinavigationcontroller

如果我的故事板形式为(箭头为segues)

UINavigationController -> ViewControllerA -> ViewControllerB

这基本上或多或少等同于

ViewControllerA -> ViewControllerB
(NavigationBar)    (NavigationBar)

如果我手动将每个NavigationBar连接到Button Bar Items,并将事件监听器附加到unwind segues上?

或者UINavigationController提供的内容不止于此吗?

3 个答案:

答案 0 :(得分:1)

存在一些差异。

我注意到,UINavigationController将正确处理iPhone X与其他型号的正确位置(它会使高度更大,因此它会进入屏幕的楔形,而只是一个导航酒吧将保持其标准高度)。

如果您只是在每个UIViewController上放置一个导航栏,您将需要检查每个视图控制器是否需要更新条形图大小。

答案 1 :(得分:1)

基本上,navigationController为您提供了许多你可能会使用的东西:一堆UIViewControllers,一个导航栏,一个工具栏,委托方法,show / pop动画等等。手工完成这一切并不是太合适一点点有点凌乱。我建议你看看Apple’s documentation for UINavigationController。在那里,您将更好地理解本课程为您提供的所有功能和方法。

答案 2 :(得分:1)

UINavigationController是所谓的容器视图控制器:它需要一堆其他视图控制器并管理其视图在屏幕上的显示方式。 UISplitViewController是容器视图控制器的另一个示例。

对于UINC,它:

  • 允许推送新的“顶级”控制器,根据区域设置从左到右/从右到左动画设置动画
  • 记住以前的顶级控制器堆栈,允许您弹回它们
  • 在顶部控制器的视图上方添加UINavigationBar视图,以便用户可以自行回弹(您可以禁用此功能)
  • 在顶级控制器的视图中设置layoutMargin,因此可以调整内容以使其不会低于标准栏
  • 提供边缘滑动手势,以便用户可以交互式弹出以前的控制器(慢慢剥离顶部页面)

有关如何创建自己的容器视图控制器的更多信息,请参阅Apple关于此主题的文档:https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html