何时访问UIViewController生命周期中的子视图属性?

问题的背景:

我正试图通过将三个UIViews放置在故事板的最顶层视图控制器中来学习如何在Xcode 6中使用故事板。 其中一个UIView是蓝色的,一个是红色的,另一个是黄色的。 我正在尝试查看是否可以通过更改其中一个UIViews的背景色来以编程方式更改UIView。 通过命令+单击UIViewController类并查看适当的重写函数,我确定“viewDidAppear”是UIViewController在其设置代码中调用的最终函数。

问题:

这是我对该功能的重写:

override func viewDidAppear(animated: Bool) {
    self.bottomView!.backgroundColor = UIColor.blackColor()
    super.viewDidAppear(animated)
}

然而,当我运行这段代码时,三个UIViews的屏幕出现一瞬间,没有黑色的UIView,然后继续崩溃

"fatal error: unexpectedly found nil while unwrapping an Optional value"

题:

我必须重写什么函数才能以编程方式更改UIView的属性? 这样做的最佳做法是什么?

编辑:

我正在使用Storyboard,所以我的三个UIView在我的UIViewController类的开头声明如下:

@IBOutlet var topLeftView: UIView?
@IBOutlet var topRightView: UIView?
@IBOutlet var bottomView: UIView?

当viewDidLoad被调用时,似乎没有实际初始化视图,因为下面的代码行的结果

println("(bottomView?)")

是“零”。 这怎么没有被初始化?


这最好在viewDidLoad完成。 viewDidAppear在视图添加到视图层次结构中时被调用,但尚未启动。 viewDidLoad在视图分配到内存时调用。 根据viewDidLoad的文档:

You usually override this method to perform additional initialization on views that were loaded from nib files

您应该重写viewDidLoad并在其中修改您的UIView

链接地址: http://www.djcxy.com/p/15381.html

上一篇: When to access subview properties in UIViewController Lifecycle?

下一篇: How to setup view in UIViewController