簡體   English   中英

Swift:如何在UIViewController子類中初始化let常量

[英]Swift: How to initialise a let constant in a UIViewController subclass

我希望模型由實現開發人員傳入,我希望它是強制性的。

let model: PagingTutorialModel

init(withModel model: PagingTutorialModel) {
    self.model = model
    super.init(nibName: nil, bundle: nil)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

錯誤:屬性'self.model'未在super.init調用時初始化

視圖控制器實際上let值,除非您為它們分配默認值。

let foo = 3

問題是,當我們從故事板初始化視圖控制器時,iOS使用init(coder:)初始化視圖控制器。 我們沒有機會在初始化期間傳遞值,因此我們不能let屬性。

原因是,在init?(coder:)你還需要設置模型。 根據您的設置,一個解決方案可能是在init?(coder:)陷阱init?(coder:)

required init?(coder aDecoder: NSCoder) {
    fatalError("Not implemented")
}

但這樣做,您無法從故事板初始化此視圖控制器。 但在我看來,故事板只適用於原型設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM