我有一個對象稱爲導航器,我在init中設置。我打破它,確保它被設置。然而,當一個IBAction函數,linkButtonClicked,get的調用,並嘗試使用導航器,我得到一個零例外。爲什麼?對象是零,雖然它是在初始化設置
class HomeCollectionViewCell: UICollectionViewCell {
let appDelegate:AppDelegate!
let navigator: Navigator!
@IBOutlet weak var linkButton: UIButton!
var destinationView:String?
var parentViewController:UIViewController?
@IBAction func linkButtonClicked(_ sender: Any) {
do {
try self.navigator.navigate(to: self.destinationView!, from: parentViewController!)
} catch {
}
}
required init?(coder aDecoder: NSCoder) {
self.appDelegate = UIApplication.shared.delegate as! AppDelegate
self.navigator = self.appDelegate.navigator
super.init(coder: aDecoder)
}
override func prepareForReuse() {
super.prepareForReuse()
// do resetting here if needed, like empty out data
linkButton.setTitle(nil, for: .normal)
}
}
前兩個屬性不應該是IUO,如果它們不是,編譯器會通過指出它們沒有被正確初始化來幫助你解決這個問題。 –