为啥这段代码不能加载我的 NIB/XIB

Posted

技术标签:

【中文标题】为啥这段代码不能加载我的 NIB/XIB【英文标题】:Why won't this code load my NIB/XIB为什么这段代码不能加载我的 NIB/XIB 【发布时间】:2009-09-19 18:17:06 【问题描述】:

我有 2 个带有相应视图控制器的 XIB。将它们称为 MainViewController 和 AboutViewController。 XIB 的名称与 ViewController 的名称完全相同。在 MainViewController 中单击按钮后,我想显示 AboutViewController。

我在 MainViewController 中有这样的代码:

- (IBAction) infoButtonAction:(id)sender 
    AboutViewController *aboutViewController = [[AboutViewController alloc] init];
    [[self navigationController] pushViewController:aboutViewController animated:YES];

但是什么也没发生,AboutViewController 没有出现。我也试过这条线:

AboutViewController *aboutViewController = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];

但无济于事。我错过了什么?

【问题讨论】:

【参考方案1】:

在 Interface Builder 中检查您的 AboutViewController.xib,并确保在类检查器中将 File Owner 设置为 AboutViewController。还要确保将文件所有者的view 属性连接到 xib 中的视图。最后,显示它的代码应该是:

- (IBAction) infoButtonAction:(id)sender 
    AboutViewController *aboutViewController = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];
    [[self navigationController] pushViewController:aboutViewController animated:YES];
    [aboutViewController release];

另外,您应该在同一方法中检查 this 是否为非零:

UINavigationController * nc = self.navigationController;

【讨论】:

你是对的。 self.navigationController 为零。你能告诉我为什么以及我能做些什么吗? 这意味着您的 MainViewController 不在 navigationController 中。您需要检查如何创建 MainViewController。【参考方案2】:

你有错误吗?您是否检查过按钮在 IB 中的接线是否正确?

您是否尝试过使用模态视图控制器?

【讨论】:

我没有收到任何错误。该按钮已正确连接,因为它在 click 函数内的断点处停止。

以上是关于为啥这段代码不能加载我的 NIB/XIB的主要内容,如果未能解决你的问题,请参考以下文章

并加载 NIB / XIB 文件?

为啥这段代码可以在 Linux 上运行,但不能在 Windows 上运行?

为啥这段代码不能访问'borderWidth'(附上iphone代码)

为啥这段代码不能线性扩展?

为啥这段代码不能在 Java 中运行? [复制]

Arduino IDE:“没有命名类型”,为啥我不能写这段代码? [复制]