ios - 根视图控制器的确切含义
问题描述
我从 Apple 官方文档Start Developing iOS Apps中阅读了以下内容:
由特定导航控制器管理的一组视图控制器称为其导航堆栈。添加到堆栈的第一项成为根视图控制器,并且永远不会从导航堆栈中弹出(删除)。
但是在 Apple View Controller Programming Guide for iOS的另一个官方文档和网上的许多其他文档中,我读到根视图控制器是根视图的控制器,第一个视图添加到窗口。
根视图控制器是视图控制器层次结构的锚。每个窗口都有一个根视图控制器,其内容填充该窗口。
那么,在导航视图控制器的情况下,导航视图控制器不应该是根视图控制器吗?为什么上面的第一个文档说它的子视图控制器是根视图控制器?我错过了什么吗?感谢您的任何解释。
解决方案
你混合了两种不同的东西。如果navigation stack
root 控制器位于堆栈的根目录,但在 的情况下window
,rootViewController
是应用程序启动时出现的第一个视图控制器。尽管在这两种情况下您都可以更改根目录。
同样,navigationController
如果您说它自己的应该是根而不是它的第一个孩子,那么您基本上是在伪造苹果的第一条陈述,这是真的,您不能弹出导航的根。Navigation Controller 不是我们常用的控制器,它就像一个容器,其中包含路由的整个控制器堆栈。你可以来回走,但不能后退rootViewController
。
两者都是用相同名称引用的不同事物。我认为导航的 rootViewController 以 iOS 的方式出现在窗口出现之前。虽然它的引用名称有点正确,但想要更改应用程序更改活动窗口的根的整个层次结构就像想要更改整个导航堆栈,更改导航的根一样。
推荐阅读
- android - 定义recyclerview click NOT 作为构造函数的成员
- java - 在 android 中集成 Snap-kit
- r - 如何在具有先前元素的向量的元素中进行一些操作
- r - 将函数参数分配给列名
- flutter - (Flutter Futurebuilder)页面更改后,应用栏标题不会立即加载
- javascript - 如何在反应js中切换到另一个组件onclick
- javascript - 如何将 map 与 formik 和 React 组件一起使用来创建列表
- r - 将 curl OAuth2 令牌请求转换为 httr
- matrix - Power BI 矩阵可视化自定义排序
- angular - 直接在组件模板中使用 Angular 服务属性好吗?