我不习惯在目标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,这是不同于我在这些搜索中找到的代码?任何帮助或建议将不胜感激。
答案 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时该怎么做。