swift中的着色图像:致命错误:在展开Optional值时意外发现nil

时间:2017-03-17 10:51:02

标签: ios swift uiviewcontroller uiimageview

美好的一天。我不知道我在这里做错了什么,但是我想在viewWillAppear中为我的图像着色,然后当我点击一个按钮时它会转到下一个控制器。然而,当我着色时,它正在改变但是在键入我的按钮时它会破坏它。这是我的代码:

 @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
    }
}

,断裂线显示在下面的图片中。

breaking point with error message

debug screen

我已检查出口是否已关联,而且它们都是。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

代码工作正常,您需要检查的是imageview的插座是否正确连接。

答案 1 :(得分:0)

如果您查看Apple documentation,则在调用viewWillAppear时视图层次结构中尚未添加视图:

  

查看会出现(_:)

     

在视图控制器的视图即将添加到视图层次结构之前以及在配置任何动画以显示视图之前调用此方法

因此,您无法在其中引用视图控制器的oulets变量。

相反,请移动viewDidLoad中的代码,该代码在加载视图层次结构后调用:

  

查看有没有负载()

     

在视图控制器将其视图层次结构加载到内存后调用此方法。