UIViewControllerのサブクラス用のカスタムinitの作成に問題があります。基本的には、プロパティを直接設定するのではなく、viewControllerのinitメソッドを使用します。viewControllerB.property = value
スウィフトのUIViewControllerのカスタム初期設定
は、だから私は、私のViewControllerのカスタム初期化を行い、ビューコントローラ・インタフェースは、ストーリーボードに常駐
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
スーパー指定のinitを呼び出して、私はまた、カスタムクラスのためのインターフェースが私のビューコントローラであることを行いました。 Swiftでは、このメソッド内で何もしていない場合でも、このinitメソッドを呼び出す必要があります。そうしないと、コンパイラは...私はそれがすべての私のViewControllerにプロパティを初期化しませんMyViewController(meme: meme)
とにinit私のカスタムを呼び出すようにしようとすると問題がある...私がしようとしていた
を
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
文句を言うだろうデバッグ、私は私のviewControllerで、init(coder aDecoder: NSCoder)
が最初に呼び出され、私のカスタムのinitが後で呼び出されるのが見つかりました。しかし、これらの2つのinitメソッドは異なるself
メモリアドレスを返します。
私のviewControllerのinitに何か間違っていると思われていますが、init?(coder aDecoder: NSCoder)
で常にself
が返されます。これには実装がありません。
誰でもあなたのviewControllerのためのカスタムのinitを作る方法を知っていますか? 注:私のViewControllerのインターフェースはストーリーボード
ここに設定されている私のViewControllerコードです:牛た回答のカップルは、もともとあった
class MemeDetailVC : UIViewController {
var meme : Meme!
@IBOutlet weak var editedImage: UIImageView!
// TODO: incorrect init
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
/// setup nav title
title = "Detail Meme"
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
editedImage = UIImageView(image: meme.editedImage)
}
}
あなたは、このためのソリューションを手に入れましたか? – user481610