class DisplayImageVC: BasePageView { //BasePageView inherits from UIViewController
@IBOutlet weak var displayImage: UIImageView!
override func viewDidLoad() {
self.displayImage.backgroundColor = UIColor.yellowColor()
}
...
在另一个课程中我尝试这个并得到一个致命的错误:
var displayImageView = self._pageContent[1] as DisplayImageVC
displayImageView.displayImage.image = UIImage(named: ("displayChecklane"))
日志:
fatal error: unexpectedly found nil while unwrapping an Optional value
Images.xcassets
答案 0 :(得分:20)
var displayImageView = self._pageContent[1] as DisplayImageVC
displayImageView.displayImage.image = UIImage(named: ("displayChecklane"))
你在第二行崩溃了。你知道这是因为有些东西是零,但你不知道这里有什么。你假设它是图像。这是一个错误的假设;如果它是正确的,那么就不会发生崩溃,因为你没有强行拆开它,将nil分配给图像视图的图像是合法的。
相反,请考虑一下:也许displayImageView.displayImage
是零。也就是说,nil是您尝试将分配给的UIImageView。这是有道理的,因为这是一个出路。如果DisplayImageVC的视图没有加载,它的出口没有被填充 - 它们仍然是零。
你如何解决这个问题取决于你想做什么。我个人认为你的方法从一开始就是假的;你没有业务设置另一个视图控制器的插座或其插座的属性,或其界面的任何方面。你应该在DisplayImageVC中有一个image
属性,在这里你应该设置该属性;这样,当视图控制器显示其视图时, it 可以配置自己的界面。