0

我有一个有几个视图的应用程序。考虑到名为 MyView1 的大型主视图,它由 MyView1Controller 控制。在 MyView1 中,有一个按钮会导致模态切换到另一个视图,其控制器也是 MyView1Controller。这个模态视图有几个 UILabel 和一个终止模态视图的按钮,将用户带回 MainView1。

这是问题所在......假设在我的模态视图中有一个名为 sampleLabel 的 UILabel。在 MyView1 中,按下了一个按钮,该按钮执行代码:

sampleLabel.text = @"changed";

由于名为 sampleLabel 的 UILabel 不在 MyView1 的屏幕上,而是来自 MyView1 的模态视图的一部分,因此没有任何反应。但是,当我单击按钮从 MyView1 查看模态视图时,UILabel 没有改变。

这更令人费解,因为主 MyView1 和从 MyView1 分离的模态视图由同一个视图控制器 MyView1Controller 控制。

有人可以告诉我如何使在用户与 MyView1 交互期间执行的代码更改模态视图中的内容,以便当他们按下按钮并转到模态视图时,UILabel 已经被更改?

谢谢!

4

2 回答 2

0

首先,Apple 建议(这让生活变得更轻松)每个视图都有一个视图控制器。所以你应该有第二个视图控制器。在第二个视图控制器中,您将拥有一个名为 sampleLabel 的属性。在第一个视图控制器中,您可以使用不同的方法来设置 sampleLabel.text。我可能会在第一个视图控制器(可能是 NSString *)中创建一个单独的 sampleLabelText 属性,并将其设置为用户按下按钮时所需的文本。然后在你的

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

你会得到你的第二个视图控制器并像这样设置它的属性:

SecondViewController *svc = [segue destinationViewController];
svc.sampleLabel.text = self.sampleLabelText;

就是这样。希望这可以帮助。

于 2013-07-17T04:42:04.887 回答
0

所以我有一个类似的问题,我通过“委托”而不是通过 segue 模式解决了。这是stackoverflow问题和我的答案的链接。代表团

希望这能让你走上正确的道路。我没有以模态方式呈现视图,而是将新的视图控制器推送到导航堆栈上,但同样的答案应该适用,希望:P

于 2013-07-17T05:31:00.713 回答