【问题标题】:All my IBOutlet are nil in viewDidLoad我所有的 IBOutlet 在 vi​​ewDidLoad 中都为零
【发布时间】:2014-02-12 08:49:04
【问题描述】:

我创建了一个UIViewController,我们可以称之为MyViewController1。当我调用MyViewController1 时,我所有的IBOutletviewDidLoad 中都是nil(在其余代码中也是如此)。

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

如果我将MyViewController1 替换为另一个,例如MyViewController2,它可以工作。所以我猜问题出在MyViewController1

您可能想知道的最后一件事是,MyViewController1 实际上是MySuperViewController1 的子类,即UIViewController

感谢您的帮助!


编辑

我意识到我的情况可能更复杂。这是我的确切文件:

// MySuperViewController1

MySuperViewController1.h

MySuperViewController1.m

MySuperViewController1.xib

// MyViewController1

MyViewController1.h

MyViewController1.m

所以 nib 属于超类,而不是子类。我可以这样做吗?

【问题讨论】:

  • MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"younibname"]; 试试看。
  • MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySuperViewController1"];怎么样

标签: ios uiviewcontroller iboutlet


【解决方案1】:

您可能应该使用:

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]

调用 init 不会匹配您的 xib 文件,也不会分配您的差异 IBOutlet

编辑:

有两种可能的解决方案:

首先是用 super nibName 调用 init :

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]

第二个是在子初始化方法中调用超级initWithNibName:

-(id)init {
   if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) {
        // Init
   }
   return self;
}

【讨论】:

  • 谢谢。我已经编辑了我的问题:笔尖属于超类,而不是子类。
  • 那你应该可以MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySuperViewController1"]
  • initWithNibName: 未定义。
【解决方案2】:

在打破我的脑袋后我遇到了同样的问题,我意识到将 xib 命名为与类名相同解决了我的问题。

【讨论】:

  • 谢谢!你刚刚为我节省了可能发疯的时间。
【解决方案3】:

检查 IBoulet 是否与 xib 正确链接。还要检查您的 xib 的文件所有者。

如果您的班级名称或 xib 名称已更改 尝试使用适当的 xibName 为您分配 viewcontroller

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"NibName" bundle:nil];

【讨论】:

  • 谢谢。我已经编辑了我的问题:笔尖属于超类,而不是子类。
  • 您是否曾经重命名过您的班级或笔尖名称?还要检查你的文件所有者,正如我之前提到的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2013-03-28
  • 2018-09-06
  • 2012-09-20
  • 1970-01-01
  • 2017-06-08
  • 2012-04-19
相关资源
最近更新 更多