2016-05-06 8 views
2

実装している開発者がモデルを渡して欲しいと思います。Swift:UIViewControllerサブクラスでlet定数を初期化する方法

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コール

+0

オプション 'try model:PagingTutorialModel? ' –

+2

を試してください。いいえ、実際にはデータの正しい表現でない限り、コンパイラを訴えるためにオプションに切り替えないでください。 – nhgrif

+1

[コーダー付きinitに関する推奨読書](http://stackoverflow.com/a/32108404/2792531) – nhgrif

答えて

0

理由はinit?(coder:)であなたもモデルを設定する必要があること、である時に初期化されていません。あなたの設定に依存し、1つの解決策は、init?(coder:)にトラップするために次のようになります。

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

しかし、そう、あなたはストーリーボードから、このビューコントローラを初期化することはできません。しかし、私の意見では、ストーリーボードはプロトタイピングのためのものです。

3

デフォルト値を割り当てていない限り、View Controllerは実際にletの値を持つことはできません。

let foo = 3 

問題は、私たちが絵コンテからView Controllerを初期化すると、iOSがinit(coder:)とビューコントローラを初期化し、あります。初期化中に値を渡す機会がないので、letのプロパティを持つことはできません。

関連する問題