以前に質問されていたら申し訳ありません。いろいろ調べてみましたが、多くの回答は状況が違っていた初期の Swift ベータ版からのものでした。明確な答えが見つからないようです。
UIViewController
サブクラス化してカスタム初期化子を作成し、コード内で簡単に設定できるようにしたいと考えています。Swift でこれを実行すると問題が発生します。
ビュー コントローラで使用するinit()
特定の を渡すために使用できる関数が必要です。私の頭の中では、次のようなものになっています。その関数を追加すると、関数を追加するように求められます。NSURL
init(withImageURL: NSURL)
init(coder: NSCoder)
これはスーパークラスでキーワードでマークされているからだと思いますかrequired
? ではサブクラスで実行する必要がありますか? 追加します:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
さて、どうしますか? 私の特別な初期化子はconvenience
1 つとみなされますか? 指定されたものですか? スーパー初期化子を呼び出しますか? 同じクラスの初期化子ですか?
特別な初期化子をUIViewController
サブクラスに追加するにはどうすればよいですか?
ベストアンサー1
class ViewController: UIViewController {
var imageURL: NSURL?
// this is a convenient way to create this view controller without a imageURL
convenience init() {
self.init(imageURL: nil)
}
init(imageURL: NSURL?) {
self.imageURL = imageURL
super.init(nibName: nil, bundle: nil)
}
// if this view controller is loaded from a storyboard, imageURL will be nil
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}