viewControllers和用于UINavigationController的childViewControlle之间的区别

时间:2016-10-18 10:35:17

标签: ios swift uinavigationcontroller

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)")
        }
}

上面的代码显示了相同的内容。但是childViewControllersviewControllers之间的区别是什么?

2 个答案:

答案 0 :(得分:2)

根据文件:

public var childViewControllers: [UIViewController] { get }

childViewControllers:一组视图控制器,它们是当前视图控制器的子控件。 (只读)。此属性不包括任何显示的视图控制器。此属性仅供自定义容器视图控制器的实现读取。

var viewControllers: [UIViewController] { get set }

viewControllers:当前位于导航堆栈上的视图控制器。

注意: ViewController也有childViewControllers属性。但viewControllers中定义了UINavigationController属性。

答案 1 :(得分:1)

ViewControllersThe view controllers currently on the navigation stack.其中ChildViewControllersAn 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语法轻松获得有关它的说明!!