ios – 我的所有IBOutlet在viewDidLoad中都为零

前端之家收集整理的这篇文章主要介绍了ios – 我的所有IBOutlet在viewDidLoad中都为零前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个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;
}
原文链接:https://www.f2er.com/iOS/335863.html

猜你在找的iOS相关文章