查看导航问题 - 'NSInternalInconsistencyException',原因:'无法在bundle中加载NIB

时间:2012-08-01 16:05:53

标签: iphone objective-c

我不习惯在目标C中进行编程,所以我觉得这只是一些非常愚蠢的事情,我正在做或没有做...

我有一个iPhone应用程序,我正试图从一个视图导航到另一个视图。我联系了一个segue,当我打电话给它时,就像这样:

[self performSegueWithIdentifier:@"ShowPolicyInformation" sender:sender];

它运作得很好。但是现在我想将一个值传递给我的新视图,而我可以告诉我用segue不能这样做。所以我在其上设置了一些属性,并尝试更加手动导航到它:

PolicyInfoViewController *pol =[[PolicyInfoViewController alloc] initWithNibName:@"PolicyViewController" bundle:nil];
pol.PropertyOne=txtOne.text;
pol.strPropertyTwo=txtTwo.text;
[[self navigationController] pushViewController:pol animated:YES];

当我用上面的代码替换performSeque代码时,它构建正常,但是当我运行它时我收到此错误: 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:'NSBundle(已加载)',名称为'MainMobileViewController''

当我搜索这个问题的帮助时,显示的所有建议都谈到确保.xib文件被正确命名....这里是我完全丢失的地方,因为我没有我能看到的任何.xib文件。我正在使用故事板,只需将视图拖放到它上面并将其连接到我创建的类。那么......我犯的新手错误是什么?我错过了什么?我正在使用xCode 4.4,这是不同于我在这些搜索中找到的代码?任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以通过仅使用Story Board执行此操作,而不必为PolicyInfoViewController提供单独的nib文件...您可能更容易这样做。

所以保留第一行代码:

[self performSegueWithIdentifier:@"ShowPolicyInformation" sender:sender];

您需要覆盖此方法来操作PolicyInfoViewController的属性

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"ShowPolicyInformation"]) 
    {
        PolicyInfoViewController *pol = segue.destinationViewController;
        pol.PropertyOne=txtOne.text;
        pol.strPropertyTwo=txtTwo.text;
    }
}

那么这里发生了什么?您告诉控件从故事板执行特定segue的第一段代码。第二位,你告诉控制在调用特定segue时该怎么做。