【问题标题】:Passing data between View Controllers using prepareForSegue使用 prepareForSegue 在视图控制器之间传递数据
【发布时间】:2012-08-20 20:02:46
【问题描述】:

我正在尝试创建一个简单的项目来在我使用情节提要设置的两个视图控制器之间传递一些数据。

该项目非常简单 - 在第一页我有一个文本字段,然后一个按钮将用户带到第二个视图控制器,希望在其中显示文本,但到目前为止还没有运气。

我正在使用 Segue 的“模态”样式,这里是代码:

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

ViewController2 *vc2;

vc2 = [segue destinationViewController];

vc2.label.text = textField.text;    

}

如果有人可以帮助我提供正确的代码并向我解释为什么我目前拥有的代码不起作用,我将不胜感激。我四处搜索,虽然关于如何做到这一点似乎有几种变化,但这对我来说似乎非常正确。

我大约两周前才从控制台迁移到 iOS,所以请保持简单!

提前致谢!

【问题讨论】:

    标签: ios storyboard segue


    【解决方案1】:

    您的问题(可能!)是destinationViewController 尚未在您尝试更新它的位置加载其视图层次结构。您可以通过以下方式验证这一点:

    NSLog(@"Label: %@", vc2.label);
    

    解决这个问题的方法是在ViewController2 中创建一个属性,它只是一个字符串,然后设置它。然后,当viewDidLoad:ViewController2 中执行时,将字符串属性复制到标签的文本中。

    【讨论】:

    • 效果很好,非常感谢!所以我想规则是在控件传递给新的视图控制器之前不要访问 GUI 的任何元素。再次感谢!
    • 具体来说,直到viewDidLoad 执行。 (很高兴它有效!)
    【解决方案2】:

    我知道它很难看,但尝试投射destinationviewcontroller。我已经尝试过了,它似乎有助于解决这种情况。

    ViewController2 *vc2 = (ViewController *) [segue destinationviewcontroller];

    另外,如果您使用故事板,您是否在 uinavigationcontroller 中?

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多