我有一个包含多个视图的应用。考虑到名为MyView1的大型主视图,它由MyView1Controller控制。在MyView1中,有一个按钮会导致模式segue到另一个视图,其控制器也是MyView1Controller。这个模态视图有一对UILabel,以及一个终止模态视图的按钮,将用户带回MainView1。
这是问题...让我们说在我的模态视图中有一个名为sampleLabel的UILabel。在MyView1中,按下一个按钮,执行代码:
sampleLabel.text = @"changed";
由于名为sampleLabel的UILabel不在MyView1的屏幕上,而是MyView1的模态视图的一部分,因此没有任何反应。但是,当我单击按钮从MyView1查看模态视图时,UILabel没有更改。
这更令人费解,因为主要的MyView1和从MyView1分离的模态视图由相同的视图控制器MyView1Controller控制。
有人可以告诉我如何在用户与MyView1交互期间执行的代码更改模态视图中的内容,这样当他们按下按钮并转到模态视图时,UILabel已经被更改了吗? / p>
谢谢!
答案 0 :(得分:0)
首先,Apple推荐(并且让生活变得更轻松)为每个视图配备一个视图控制器。所以你应该有第二个视图控制器。在第二个视图控制器中,您将拥有一个名为sampleLabel的属性。在第一个视图控制器中,您可以使用不同的方法来设置sampleLabel.text。我可能会在第一个视图控制器中创建一个单独的sampleLabelText属性(可能是NSString *),并在用户按下按钮时将其设置为所需的文本。然后在你的
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
你会得到你的第二个视图控制器并设置它的属性如下:
SecondViewController *svc = [segue destinationViewController];
svc.sampleLabel.text = self.sampleLabelText;
就是这样。希望这会有所帮助。
答案 1 :(得分:0)
所以我有一个类似的问题,我通过'委托'而不是通过segue架构解决。这是stackoverflow问题和我的答案的链接。 Delegation
希望这能让你走上正确的道路。我没有以模态方式呈现视图,而是将新的视图控制器推送到导航堆栈,但应该应用相同的答案,希望如下:P