如何更新从一个方法的快速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
必须正确连接。