在视图控制器之间移动信息
Posted
技术标签:
【中文标题】在视图控制器之间移动信息【英文标题】:Moving Info Between View Controllers 【发布时间】:2014-07-07 01:52:15 【问题描述】:我是 ios 新手,正在尝试找出一些可能是基本的东西。我有两个 UIView,每个页面上有四个按钮,每个按钮下面有四个标签。基本上,如果我按下视图控制器 1 上的按钮 1,我希望视图控制器 2 上的所有标签都简单地读取“2”。这是一个更好的视觉图像:
我为视图控制器 1 上的每个 UIButton 设置了插座,并为视图控制器 2 上的每个标签设置了插座。
- (IBAction)button1Pressed:(id)sender
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"viewController2"];
vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:vc animated:YES completion:NULL];
ViewController2 *vc2 = [[ViewController2 alloc]init];
vc2.label1.text = @"1";
vc2.label2.text = @"1";
vc2.label3.text = @"1";
vc2.label4.text = @"1";
它过渡得很好。但是,我在过渡期间尝试更改标签的文本时遇到了麻烦。我收到三个错误:“Unknown receiver: ViewController2”、“Unknown type name: ViewController2”和“Property label1
not found on type of ViewController *”。因此,看来我在设置更改文本时遇到了麻烦。有谁知道我在这里做错了什么?
【问题讨论】:
【参考方案1】:替换
vc2.label1.text = @"1";
vc2.label2.text = @"1";
vc2.label3.text = @"1";
vc2.label4.text = @"1";
与
vc.label1.text = @"1";
vc.label2.text = @"1";
vc.label3.text = @"1";
vc.label4.text = @"1";
然后删除
ViewController2 *vc2 = [[ViewController2 alloc]init];
【讨论】:
谢谢。我这样做了,我收到错误“在 UIViewController 类型的对象上找不到属性 label1”。 哦,我明白了。您将要创建一个继承自 UIViewController 并具有 4 个标签的公共属性的新类。然后创建 vc 作为那种类型的视图控制器,而不仅仅是标准的。 谢谢。这超出了我的想象,但我会研究它 我发现 AppCoda 教程非常擅长解释此类内容。我相信他们有关于使用 segues 传递数据的教程【参考方案2】:您正在呈现的视图控制器,即将出现的视图控制器是vc
。这就是您要设置标签的位置。
代码的最后五行中提到的东西vc2
什么都不是:它只是你为五行带来的东西,然后它就烟消云散了,毫无意义。甚至很难想象这些代码行的用途是什么。
【讨论】:
以上是关于在视图控制器之间移动信息的主要内容,如果未能解决你的问题,请参考以下文章