fileprivate func test() {
guard let w = self.view.window else {
print("no window")
return
}
guard let rootvc = w.rootViewController as? UINavigationController else {
print("no rootvc")
return
}
for vc in rootvc.childViewControllers {
print("CHILD \(vc)")
}
for vc in rootvc.viewControllers {
print("VC \(vc)")
}
}
上面的代码显示了相同的内容。但是childViewControllers
和viewControllers
之间的区别是什么?
答案 0 :(得分:2)
根据文件:
public var childViewControllers: [UIViewController] { get }
childViewControllers:一组视图控制器,它们是当前视图控制器的子控件。 (只读)。此属性不包括任何显示的视图控制器。此属性仅供自定义容器视图控制器的实现读取。
var viewControllers: [UIViewController] { get set }
viewControllers:当前位于导航堆栈上的视图控制器。
注意: ViewController
也有childViewControllers
属性。但viewControllers
中定义了UINavigationController
属性。
答案 1 :(得分:1)
ViewControllers
为The view controllers currently on the navigation stack.
其中ChildViewControllers
为An array of view controllers that are children of the current view controller
。
根视图控制器位于数组中的索引0处,后视图控制器位于索引n-2处,顶部控制器位于索引n-1处,其中n是数组中的项目数。 为此属性分配新的视图控制器数组等效于调用setViewControllers:animated:方法,并将animated参数设置为false。
ChildViewControllers
属性不包含任何呈现的视图控制器。此属性仅供自定义容器视图控制器的实现读取。
您可以通过Alt + Click
语法轻松获得有关它的说明!!