在单独的视图控制器上编辑文本

时间:2014-07-07 18:29:43

标签: ios uiviewcontroller transition

我是iOS的新手,我正试图找出可能基本的东西。我有两个UIViews,每页有四个按钮,每个按钮下面有四个标签。基本上,如果我按下视图控制器1上的按钮1,我希望视图控制器2上的所有标签都只是读取“1”。这是一个更好的视觉形象:

enter image description here

现在,我已将IB中按钮1的模态转换连接到View Controller 2,并调用此方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"number1"]){
        ViewController2 *controller2 = [[ViewController2 alloc]init];
        controller2.label1.text = @"1";
            NSLog(@"Fired");
            NSLog(@"%@", controller2.label1.text);
    }
}

它转换得很好,但不会改变标签。 NSLogs显示该方法触发,但标签为null。有谁知道我需要在这里改变什么?

我在ViewController2中声明了我的标签,如下所示:

@interface ViewController2 : UIViewController {
    UILabel *label1;
}

@property (strong, nonatomic) IBOutlet UILabel *label1;

@end

以下是label1的连接检查器: enter image description here

1 个答案:

答案 0 :(得分:1)

您正在创建一个全新的视图控制器实例。故事板为您创建视图控制器,并将其传递给您,以便在prepareForSegue:sender:方法中进行配置。您可以像这样访问它:

ViewController2 *controller2 = (ViewController2 *)segue.destinationViewController;
// configure controller2 here

此外,调用prepareForSegue:时,不会设置视图控制器上的出口。您需要在第二个视图控制器上具有NSString作为属性。稍后,您可以使用viewDidLoad将标签的文本设置为您之前定义的NSString属性所持有的值。