模态演示/堆叠ViewControllers的含义

时间:2017-08-04 20:36:53

标签: swift uinavigationcontroller

我正在开发一个项目,该项目在导航控制器中堆叠了多个视图控制器,类似于:

https://youtu.be/yl2m4fDOLQo

我担心最终可能会在一个导航控制器中堆叠太多视图控制器。据我所知,一旦导航控制器中堆叠了超过3个视图控制器,视图将以“模态”方式显示

首先,什么是“模态”演示?我在Swift文档中查了一下,但是我在理解它与导航堆栈的不同之处时遇到了一些麻烦。第二,如果有问题,有什么办法吗?

我是新手,所以非常感谢帮助, 尼克

1 个答案:

答案 0 :(得分:0)

  

据我所知,一旦导航控制器中堆叠了超过3个视图控制器,视图将以“模态”方式显示

这是错误的。只要设备有足够的内存,您就可以在应用程序需要的导航堆栈中拥有尽可能多的视图控制器。导航堆栈中的视图控制器具有导航栏(技术上,这是导航控制器的一部分),后退按钮和(希望)向右滑动手势,允许用户返回“向上”堆栈。您可以通过调用pushViewController(animated:)将视图控制器添加到堆栈,并通过调用导航控制器上的popViewController(animated:)将其删除。

模态视图控制器存在于导航堆栈之外。它没有导航栏,因为它不在导航控制器中。您有责任添加一些方法来关闭模态,例如点击在视图控制器视图中手动放置的关闭按钮。您甚至可以手动添加导航栏实例并在其中放置关闭按钮。您可以通过在当前显示的视图控制器上调用present(_:animated:completion:)来显示模态,并通过调用dismiss(_:animated:completion:)将其关闭。