在视图控制器之间传递数据

时间:2013-02-21 10:58:22

标签: objective-c uiviewcontroller

我仍然是Objective C和xCode的新手,所以请原谅我。

我在故事板中设置了两个视图控制器,我使用以下代码移动到另一个:

UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController * viewController = [storyBoard instantiateViewControllerWithIdentifier:@"stageOne"];
[self presentViewController:viewController animated:YES completion:nil];

现在这很好用,虽然在控制第二个视图控制器的类中我有一个属性设置,我试图发送数据。我正在尝试以下方法:

UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController * viewController = [storyBoard instantiateViewControllerWithIdentifier:@"stageOne"];
viewController.forename = @"Hello World";
[self presentViewController:viewController animated:YES completion:nil];

虽然这不起作用,但我得到的是一个错误,在'UIViewController'类型的对象上找不到“属性'forename'。”

如果您能够留下一些非常棒的示例代码,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

基本上,对于2个控制器之间的传递数据,您可以使用2种设计模式:DelegationObserver.

在您的情况下,您使用委托。您的头文件中是否有名为forename的公共财产?

答案 1 :(得分:0)

您的代码存在的问题是您访问尚未在内存中创建的uicontrol。你必须像这样改变你的陈述执行的顺序......

UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
holidayQuestion * viewController = [storyBoard instantiateViewControllerWithIdentifier:@"stageOne"];

[self presentViewController:viewController animated:YES completion:nil];
viewController.forename = @"Hello World";