【发布时间】:2014-09-17 16:57:00
【问题描述】:
问题背景:
我正在尝试通过将三个 UIView 放置在情节提要的最顶层视图控制器中来学习如何在 Xcode 6 中使用情节提要。 UIView 的一个是蓝色的,一个是红色的,一个是黄色的。我想看看是否可以通过更改其中一个 UIView 的背景颜色以编程方式更改 UIView。通过 Command + 单击 UIViewController 类并查看要覆盖的适当函数,我确定“viewDidAppear”是 UIViewController 在其设置代码中调用的最终函数。
问题:
这是我对函数的重写:
override func viewDidAppear(animated: Bool) {
self.bottomView!.backgroundColor = UIColor.blackColor()
super.viewDidAppear(animated)
}
但是,当我运行此代码时,带有三个 UIView 的屏幕会出现一瞬间,没有黑色 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?)")
是“零”。这怎么没有被初始化?
【问题讨论】:
标签: uiviewcontroller swift lifecycle