如何更新从一个方法的快速UI

我是新来的迅速,我正在写一个应用程序,需要改变故事板中的图像。 我写了一个函数来改变图像视图中的图像。 在函数中有一个if条件,当if条件满足时应该改变图像,但是如果条件被执行,我得到了“意外地发现零,而解包可选值”错误。

import UIKit import MessageUI import Foundation import CoreLocation class ViewController: UIViewController { @IBOutlet var F_IMG: UIImageView! @IBOutlet var FL_IMG: UIImageView! @IBOutlet var FR_IMG: UIImageView! override func viewDidLoad() { super.viewDidLoad() TimeService.initial(viewcontroller: self) } public func showImages(){ var type: String = Otherclass.gettype() setImageForType(type:type) } public func setImageForType(type:String){ if (type == "NONE"){ DispatchQueue.main.async { self.F_IMG.image = UIImage(named: "r_f") } 

“showImage()函数在另一个类中调用。”

我有捆绑的形象,但我的用户界面没有得到更新,它总是显示错误“意外地发现零,而展开可选值”

确保FrontImg正确连接到Storyboard或通过代码正确初始化。

更新:

事实certificate,你是从其他类调用showImages() ,因此它是给零错误。

通过从其他类调用ViewController.showImages() ,您正在创build一个新的ViewController ,而不是引用现有的ViewController 。 这个新的没有F_IMG(imageView) ,因为它的视图还没有build立。 你引用self.F_IMG.image是零。

我的build议是使用NSNotificationCenter来更新其他View Controller中的UI。

有关更多方法,请参阅此答复

我相信这个问题是由这一行引起的:

 self.FrontImg.image = UIImage(named: "r_f") 

如果您在UIImage类上检查Apple Docs ,则使用init?(named name: String)的初始化程序实际上会返回可选项

所以,你试过了吗?

 self.FrontImg.image = UIImage(named: "r_f")! 

我发现这里唯一确保你的UIElement FrontImg必须正确连接。