1

我是目标 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 代码时,它构建得很好,但是当我运行它时出现这个错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException',原因:'Could not load NIB in bundle:'NSBundle (loaded) ' 名称为 'MainMobileViewController''

当我寻求有关此问题的帮助时,显示的所有建议都在谈论确保正确命名 .xib 文件....这是我完全迷失的地方,因为我没有任何 .xib我可以看到的文件。我正在使用情节提要,只需将视图拖放到上面并将其连接到我创建的类。那么......我犯了什么新手错误?我错过了什么?我正在使用 xCode 4.4,所以这只是与我在这些搜索中找到的不同的代码吗?任何帮助或建议将不胜感激。

4

1 回答 1

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 被调用时要做什么。

于 2012-08-01T17:59:35.797 回答