两个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];
}

主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];
}

that’s all
工程下载:
BlockExchangeValue

转载请注明: 转自Rainbird的个人博客
   本文链接: 两个View基于Block的传值


相关博文

    分享到:

About rainbird

IOS攻城狮
This entry was posted in IOS开发, Mac开发, object-c, xCode and tagged , , , , , , . Bookmark the permalink.

发表评论