我所有的IBOutlet都是在viewDidLoad中
我创build了一个我们可以调用MyViewController1
的UIViewController
。 当我调用MyViewController1
,我所有的IBOutlet
在viewDidLoad
(以及其他代码中)都是零 。
当我通过做这个控制器
MyViewController1 *vc = [[MyViewController1 alloc] init]
,
如果我replaceMyViewController1
另一个,例如MyViewController2
,它的工作原理。 所以我想这个问题真的在MyViewController1
。
最后一件你可能想知道的事情是, MyViewController1
实际上是MySuperViewController1
一个子类,它是一个UIViewController
。
谢谢你的帮助 !
编辑
我意识到我的情况可能更复杂。 这是我的确切文件:
// MySuperViewController1
MySuperViewController1.h MySuperViewController1.m MySuperViewController1.xib
// MyViewController1
MyViewController1.h MyViewController1.m
所以笔尖属于超类,而不是子类。 我可以这样做吗?
你应该可以使用:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]
调用init
将不会与你的xib文件进行匹配,也不会分配你的不同的IBOutlet
编辑:
有两种可能的解决scheme:
首先调用超级nibName的init:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]
第二个是在子init方法中调用super initWithNibName:
:
-(id)init { if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) { // Init } return self; }
我遇到同样的问题后,突然脑袋,我意识到命名xib相同的类名解决了我的问题。
检查IBoulet是否与xib链接正确。 同时检查你的xib文件的所有者。
如果您的类名称或xib名称已更改尝试使用正确的xibName来分配您的viewcontroller
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"NibName" bundle:nil];