我有为UIViewController的子类编写自定义init的问题,基本上我想通过viewController的init方法传递依赖,而不是直接设置属性 viewControllerB.property = value
所以我为我的viewController做了一个自定义初始化,并调用超级指定的init
init(meme: Meme?) {
self.meme = meme
super.init(nibName: nil, bundle: nil)
}
Run Code Online (Sandbox Code Playgroud)
视图控制器界面位于故事板中,我还将自定义类的界面作为我的视图控制器.即使你没有在这个方法中做任何事情,Swift也需要调用这个init方法.否则编译器会抱怨......
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试调用我的自定义init时,MyViewController(meme: meme)它根本不在我的viewController中初始化属性...
我试图调试,我在我的viewController中找到,先init(coder aDecoder: NSCoder)调用,然后调用我的自定义init.但是这两个init方法返回不同的self内存地址.
我怀疑有毛病初始化为我的viewController,它总是会返回self与init?(coder aDecoder: NSCoder),其中,有没有实现.
有谁知道如何正确地为您的viewController制作自定义初始化?注意:我的viewController接口是在storyboard中设置的
这是我的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: …Run Code Online (Sandbox Code Playgroud)