【问题标题】:Coloring image in swift: fatal error: unexpectedly found nil while unwrapping an Optional value快速着色图像:致命错误:在展开可选值时意外发现 nil
【发布时间】:2017-03-17 19:15:31
【问题描述】:

美好的一天。我不确定我在这里做错了什么,但我试图在 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

我已经检查了网点是否已链接,并且它们都是。

任何帮助将不胜感激。

【问题讨论】:

  • 检查 outlet logoImageView 是否与 ViewController 正确连接?
  • @NiravD 是的

标签: ios swift uiviewcontroller uiimageview


【解决方案1】:

代码运行良好您必须检查的一件事是imageview 的插座是否连接正确。

【讨论】:

  • 我什至在发布问题之前就这样做了,但什么也没做,我检查了他们已连接的网点/
  • 您是否在 viewDidLoad 中尝试过此代码?在那里尝试一下。应该可以。
【解决方案2】:

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

视图​将​出现(_:​)

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

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

相反,将您的代码移动到viewDidLoad,一旦加载视图层次结构就会调用它:

查看​Did​Load()

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

【讨论】:

  • 我什至在发布问题之前就这样做了,但什么也没做,我检查了他们已连接的网点/
  • @devSA viewDidLoad 是放置代码的正确位置。如果它在那里不工作,要么插座没有连接,要么它已连接但视图被释放。将代码放入viewDidLoad 并从IBOutlet 声明中删除weak 关键字。如果这不能解决问题,则连接不存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2016-01-26
相关资源
最近更新 更多