presentViewController 对 UINavigationController 的限制是什么

What are limitations of presentViewController over UINavigationController

我对 "In which situations we have to use presentViewController and UINavigationController" 感到困惑。 我看了很多文档,但我没有找到准确的解释。我们总是可以使用 UInavigationController 那么 presentViewController 有什么用呢?

谢谢。

UINavigationController 维护正在查看的控制器的堆栈。所以一旦你通过 1->2->3 视图控制器,你就可以以 3->2->1 的方式弹出。除非您不更改堆栈,否则这种流程由 UINavigationController 维护。现在假设您想在不干扰上述流程的情况下显示第 4 个视图控制器。然后你可以使用 presentViewController.

这是最简单最基本的使用导航控制器和presentViewController

您不能将导航控制器推送到其他导航控制器。 您可以在其他导航控制器上方显示一个导航控制器。

如果将视图控制器推入导航控制器,则视图控制器的视图仅覆盖导航控制器内的区域。 如果您呈现视图控制器,视图控制器的视图将覆盖 window 层次结构(用户无法与应用程序的其他部分交互)。

您不能使用 UINavigationController 来呈现一些 UIViewController。你应该关心 "close" 按钮让用户关闭呈现的 UIViewController

我创建了测试项目来说明我的答案https://github.com/K-Be/PresentTest