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

ios – 我的所有IBOutlet在viewDidLoad中都为零,第1张

概述我创建了一个UIViewController,我们可以调用MyViewController1.当我调用MyViewController1时,我的所有IBOutlet在viewDidLoad中都为零(而在其余的代码中). 当我通过做创建这个控制器 MyViewController1 * vc = [[MyViewController1 alloc] init], 如果我用另一个替换MyViewCon 我创建了一个UIVIEwController,我们可以调用MyVIEwController1.当我调用MyVIEwController1时,我的所有IBOutlet在vIEwDIDLoad中都为零(而在其余的代码中).

当我通过做创建这个控制器
MyVIEwController1 * vc = [[MyVIEwController1 alloc] init],

如果我用另一个替换MyVIEwController1,例如MyVIEwController2,它可以工作.所以我猜这个问题真的在MyVIEwController1中.

最后你可能想知道的是,MyVIEwController1实际上是一个UIVIEwController的MySuperVIEwController1的子类.

谢谢你的帮助 !

编辑

我意识到我的情况可能更复杂.以下是我的确切文件:

// MySuperVIEwController1

MySuperVIEwController1.hMySuperVIEwController1.mMySuperVIEwController1.xib

// MyVIEwController1

MyVIEwController1.hMyVIEwController1.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;}
总结

以上是内存溢出为你收集整理的ios – 我的所有IBOutlet在viewDidLoad中都为零全部内容,希望文章能够帮你解决ios – 我的所有IBOutlet在viewDidLoad中都为零所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1110447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存