Nic*_*Roy 16 uiviewcontroller iboutlet ios
我创造了一个UIViewController我们可以打电话的人MyViewController1.当我打电话MyViewController1,我所有的IBOutletARE 零的viewDidLoad(以及其他代码太).
当我通过这样做创建这个控制器时
MyViewController1 *vc = [[MyViewController1 alloc] init],
MyViewController1例如MyViewController2,如果我替换另一个,它就可以了.所以我猜问题确实存在MyViewController1.
你可能想知道的最后一件事,就是MyViewController1实际上是一个子类,MySuperViewController1这是一个UIViewController.
谢谢你的帮助 !
编辑
我意识到我的情况可能更复杂.这是我的确切文件:
// MySuperViewController1
MySuperViewController1.h
MySuperViewController1.m
MySuperViewController1.xib
Run Code Online (Sandbox Code Playgroud)
// MyViewController1
MyViewController1.h
MyViewController1.m
Run Code Online (Sandbox Code Playgroud)
所以nib属于超类,而不是子类.我能这样做吗?
KID*_*dAe 13
您应该使用:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]
Run Code Online (Sandbox Code Playgroud)
调用init不会与你的xib文件匹配,也不会分配你的不同IBOutlet
编辑:
有两种可能的解决方案:
首先用超级nibName调用init:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]
Run Code Online (Sandbox Code Playgroud)
第二个是initWithNibName:在子init方法中调用super :
-(id)init {
if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) {
// Init
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8477 次 |
| 最近记录: |