关闭

iOS block传值

147人阅读 评论(0) 收藏 举报
分类:

有两个页面,分别是:FirstViewController和SecondViewController,想到达到的效果是:从第一个页面push到第二个页面,然后在第二个页面pop的时候把值传回第一个页面。


大概代码如下,FirstViewController点击按钮:

- (void)btnClick
{
    SecondViewController *second = [[SecondViewController alloc] init];
    [second completeBlock:^(NSString *name) {
        NSLog(@"回调拿到的name = %@", name);
    }];
    
    [self.navigationController pushViewController:second animated:YES];
}

SecondViewController.h :


typedef void(^Block)(NSString *name); // 定义一个Block类型

@interface SecondViewController : UIViewController

@property (nonatomic, copy) Block block; // block属性

- (void)completeBlock:(Block)block; // block回调方法

@end

SecondViewController.m 点击按钮pop回第一个页面:


- (void)btnClick
{
    // 本页面的block存在则响应第一个页面的回调
    if (self.block) {
        self.block(@"Jerry Yao");
    }
    
    [self.navigationController popViewControllerAnimated:YES];
}

/**
 *  重写回调get方法
 *
 *  @param block 把第一个页面实例化的block传到本页面
 */
- (void)completeBlock:(Block)block
{
    _block = block;
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:152136次
    • 积分:2881
    • 等级:
    • 排名:第12381名
    • 原创:132篇
    • 转载:88篇
    • 译文:0篇
    • 评论:16条
    最新评论