在视图之间传递数据不起作用

时间:2013-03-02 17:38:43

标签: objective-c xcode segue

我知道这个问题被问过100次,但我无法弄清楚我做错了什么。

这是我的第二个iOS应用程序。我想通过按ViewControllerA中的Button来修改ViewControllerB中的Label。

  1. 我在故事板中从我的按钮(ViewControllerA)到ViewControllerB制作了一个Segue,称之为“TestSegue”。
  2. #import "ViewControllerB.h
  3. 中写了ViewControllerA.h
  4. 我在ViewControllerA.m中编写了此代码:
  5. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"TestSegue"]){
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
    controller.TestLabel.text = @"TEST!";}}
    

    In my ViewControllerB nothing happens with the TestLabel...

    Can anybody see what I did wrong?

    Thanks in advance

    Edit: Works now thanks to rpledge.

    New Code:

    if([segue.identifier isEqualToString:@"TestSegue"]){
    
    ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
    controller.TestLabel.text = @"TEST!";}}
    

2 个答案:

答案 0 :(得分:1)

可能是因为在运行viewDidLoad之前不会创建TextLabel UI元素,这将在prepareForSegue之后发生:

我不喜欢公开公开视图的UI元素,我建议您将NSString *的@property添加到目标视图控制器,然后在viewDidLoad中设置UILabel.text:

答案 1 :(得分:0)

不要将其分配给控件,而是分配给实例变量。

@property (nonatomic) NSString *var;

然后在viewDidLoad中将其分配给控件。