0
我很確定@IBOutlet
在super.awakeFromNib()
之後被初始化,但它是零?@ awakeFromNib中的IBOutlet未初始化
重現步驟:
- 創建一個新的子UIView的; MyView
- 創建一個.xib UIView並將「文件所有者」設置爲「MyView」
- 在UIViewController的視圖中的故事板中,將「Custom Class」設置爲MyView。
- 連接
@IBOutlet
- 這會給你錯誤。 4.
更新:
這不,如果你直接使用故事板工作。
- 創建一個子UIView; MyView
- 在Storyboard UIViewController視圖中添加一個標籤。
- 在一個UIViewController的視圖設置「自定義類」故事板到MyView的
- 連接
@IBOutlet
這工作。
import UIKit class MyView: UIView { @IBOutlet weak var myLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() self.myLabel.text = "Hello world" } override func didMoveToSuperview() { self.myLabel.text = "Hello world" } override func layoutSubviews() { self.myLabel.text = "Hello world" } override func didMoveToWindow() { self.myLabel.text = "Hello world" } }
確定插座已連接? – Oskar
相同:致命錯誤:意外地發現零,同時展開一個可選值 –
誰擁有導航欄?如果它是一個頂級的nib對象,那麼你需要連接一個強引用,否則它會在你到達awakeFromNib時解除分配。 – Darren