使用Storyboard通过ViewControllers传递数据

时间:2012-12-06 13:17:53

标签: uiviewcontroller uitextfield storyboard

我在SecondVC上有两个带有UITextField的视图控制器,我希望将数据推回到第一个viewController中的UILabel。 第一个ViewController嵌入在UINavigationController

prepareForSegue

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用块属性。

在SecondVC上公开一个带有NSString的块属性:

@property (copy, nonatomic) void ^TextFieldBlock(NSString *textString);

在第一个视图控制器的prepareForSegue中设置此属性并更新块内的UILabel(使用weakSelf以避免保留周期问题):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    __weak typeof(self)weakSelf = self;
    [segue.destinationViewController setTextFieldBlock:^(NSString *textString) {
        weakSelf.mainLabel.text = textString;
    }];
}

然后在SecondVC中调用block属性并在返回时传入UITextField的文本:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    [self TextFieldBlock](textField.text);
    return YES;
}