我在SecondVC上有两个带有UITextField
的视图控制器,我希望将数据推回到第一个viewController中的UILabel
。
第一个ViewController嵌入在UINavigationController
。
prepareForSegue
?
答案 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;
}