本文主要是介绍两个View 使用BLOCK传值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
两个View间的传值有很多种方法,Block只是其中的一种,一个小朋友正在学习Block的用法,看别人写的Block很复杂,学不会,非追着我问怎么回事儿,烦的不行,写个示例工程,图个清静。
其实代码很简单
第二个view声明一个block属性:
@property (nonatomic, copy) void(^doTransferMsg)(NSString *_msg);
然后传值方法里检查block是不是存在
- (IBAction)transferText:(UIButton *)sender {
if (_doTransferMsg) {
_doTransferMsg(@"hello there");
_doTransferMsg = nil;
}
[self.navigationController popViewControllerAnimated:YES];
}
if (_doTransferMsg) {
_doTransferMsg(@"hello there");
_doTransferMsg = nil;
}
[self.navigationController popViewControllerAnimated:YES];
}
主View里,创建第二个view的时候,顺便实现这个block
- (IBAction)LoadDetailView:(UIButton *)sender {
[ibTextLabel setText:nil];
DetailViewController *_curDetail = [[DetailViewController alloc] initWithNibName:@"DetailViewController"
bundle:nil];
[_curDetail setDoTransferMsg:^(NSString *_msg) {
dispatch_async(dispatch_get_main_queue(), ^{
[ibTextLabel setText:_msg];
});
}];
[self.navigationController pushViewController:_curDetail
animated:YES];
[_curDetail release];
}
[ibTextLabel setText:nil];
DetailViewController *_curDetail = [[DetailViewController alloc] initWithNibName:@"DetailViewController"
bundle:nil];
[_curDetail setDoTransferMsg:^(NSString *_msg) {
dispatch_async(dispatch_get_main_queue(), ^{
[ibTextLabel setText:_msg];
});
}];
[self.navigationController pushViewController:_curDetail
animated:YES];
[_curDetail release];
}
这篇关于两个View 使用BLOCK传值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!