[iOS开发]block传值
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[iOS开发]block传值相关的知识,希望对你有一定的参考价值。
在两个界面传值时可以用到block传值,本文示例是由第一个视图控制器push出第二个视图控制器,更改第二个视图的textField的text,返回第一个视图后第一个视图的label文字改变。此外,第二个视图控制器textField的text与第一个视图的label的文字一致。
使用
第一步,先声明属性,在第二个视图控制器中:
@property (nonatomic, strong) void(^firstBlock)(NSString *text);
@property (nonatomic, copy) NSString*(^secondBlock)(void);
第一个没有返回值,有一个参数,第二个有返回值,没有参数。
第二步,在第一个视图控制器的按钮事件中:
- (void)pressSkip {
SecondViewController * secondPage = [[SecondViewController alloc] init];
secondPage.firstBlock = ^(NSString * str) {
self.textLabel.text = str;
};
secondPage.secondBlock = ^NSString*(void) {
return self.textLabel.text;
};
[self.navigationController pushViewController:secondPage animated:YES];
}
第三步,第二个视图控制器要接受一个返回值,并传一个参数:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
_textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 200, self.view.frame.size.width - 200, 40)];
_textField.borderStyle = UITextBorderStyleLine;
[self.view addSubview:_textField];
if (_secondBlock) {
_textField.text = _secondBlock();
}
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (_firstBlock) {
_firstBlock(_textField.text);
}
}
效果:
以上是关于[iOS开发]block传值的主要内容,如果未能解决你的问题,请参考以下文章