我创建了一个UIViewController,我们可以调用MyViewController1.当我调用MyViewController1时,我的所有IBOutlet在viewDidLoad中都为零(而在其余的代码中).
当我通过做创建这个控制器
MyViewController1 * vc = [[MyViewController1 alloc] init],
如果我用另一个替换MyViewController1,例如MyViewController2,它可以工作.所以我猜这个问题真的在MyViewController1中.
最后你可能想知道的是,MyViewController1实际上是一个UIViewController的MySuperViewController1的子类.
谢谢你的帮助 !
编辑
我意识到我的情况可能更复杂.以下是我的确切文件:
// MySuperViewController1
MySuperViewController1.h MySuperViewController1.m MySuperViewController1.xib
// MyViewController1
MyViewController1.h MyViewController1.m
所以笔尖属于超类,而不是子类.我能做到吗
解决方法
你应该使用:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]
调用init将不会与您的xib文件匹配,也不会分配您的不同IBOutlet
编辑:
有两种可能的解决方案:
首先用超级nibName调用init
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]
第二个是调用super initWithNibName:在init方法中:
-(id)init { if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) { // Init } return self; }