問題的背景:何時訪問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的屬性,我必須重寫什麼函數?這樣做的最佳做法是什麼?
編輯:
我使用故事板使我的三個的UIView的在我的UIViewController類的開始,因爲這樣宣稱:
@IBOutlet var topLeftView: UIView?
@IBOutlet var topRightView: UIView?
@IBOutlet var bottomView: UIView?
看來,當viewDidLoad中得不到任何的意見,實際上是初始化因爲下面這行代碼的結果是
println("\(bottomView?)")
是「無」。這是怎麼沒有得到初始化?
我編輯了我的初始帖子以迴應您的建議。 – almel