2017-03-17 31 views
0

美好的一天。我不確定我在這裏做錯了什麼,但是我試圖在viewWillAppear中爲我的圖像着色,然後當我點擊一個按鈕時,它會延續到下一個控制器。然而,當我着色時,它正在改變,但是當輸入我的按鈕來延緩它的打破。這裏是我的代碼:swift中的着色圖像:致命錯誤:意外地發現零,同時展開一個可選值

@IBOutlet weak var welcomeLabel: UILabel! 
@IBOutlet weak var logoImageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    self.navigationController?.setNavigationBarHidden(true, animated: true) 

    let logo = UIImage(named: "UnifiedLogo.png") 

    if let imageForLogo = logo{ 
     let templateImage = imageForLogo.withRenderingMode(UIImageRenderingMode.alwaysTemplate) 
     print(templateImage) 
     logoImageView.image = templateImage 
     logoImageView.tintColor = UIColor.white 
    } 
} 

,斷裂線在波紋管PIC所示。

breaking point with error message

debug screen

我已經檢查了店鋪鏈接,他們都是。

任何幫助將不勝感激。

+0

檢查出口'logoImageView'正確地與視圖控制器連接? –

+0

@NiravD是的,它是 – devSA

回答

0

代碼工作正常,你必須檢查的一件事是如果imageview插座連接正確與否。

+0

我甚至在我發佈這個問題之前就做了這個,但是沒有發現,我檢查了他們連接的網點/ – devSA

+0

你有沒有在viewDidLoad中試過這段代碼?試試吧。 –

0

如果你看一下Apple documentation,認爲還沒有在視圖層次添加時viewWillAppear叫做:

view​Will​Appear(_:​)

This method is called before the view controller's view is about to be added to a view hierarchy and before any animations are configured for showing the view

因此,你不能引用視圖控制器的oulets變量的原因。

相反,移動在viewDidLoad你的代碼,一旦視圖層次裝載被稱爲:

view​Did​Load()

This method is called after the view controller has loaded its view hierarchy into memory.

+0

我甚至在發佈這個問題之前就做了這個,但沒有發現,我檢查了他們連接的網點/ – devSA

+0

@devSA'viewDidLoad'是放置代碼的正確位置。如果它不在那裏工作,或者插座沒有連接,或者它已連接,但視圖已被釋放。將代碼放在'viewDidLoad'中,並從'IBOutlet'聲明中移除'weak'關鍵字。如果這不會導致問題消失,那麼連接就不存在了。 – JeremyP

相關問題