美文网首页iOS
Block结合typedef使用

Block结合typedef使用

作者: 说不出口的喵 | 来源:发表于2017-11-30 15:31 被阅读2次

    这里举例一个Block回调修改上一下界面的背景颜色。

    ViewController1 控制器1,ViewController2 控制器2

    控制器1跳转到控制器2,然后在控制器2触发事件回调修改控制器1的背景颜色为红色。

    ViewController2的实现

    #import

    @interface ViewController2 : UIViewController

    /**

    *  定义了一个changeColor的Block。这个changeColor必须带一个参数,这个参数的类型必须为id类型的

    *  无返回值

    *  @param id

    */

    typedef void(^changeColor)(id);

    /**

    *  用上面定义的changeColor声明一个Block,声明的这个Block必须遵守声明的要求。

    */

    @property (nonatomic, copy) changeColor backgroundColor;

    @end

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    //声明一个颜色

    UIColor *color = [UIColor redColor];

    //用刚刚声明的那个Block去回调修改上一界面的背景色

    self.backgroundColor(color);

    }

    ViewController1的实现

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    ViewController2 *vc =[[ViewController2 alloc]init];

    // 回调修改颜色

    vc.backgroundColor = ^(UIColor *color){

    self.view.backgroundColor = color;

    };

    [self.navigationController pushViewController:vc animated:YES];

    }

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

        本文标题:Block结合typedef使用

        本文链接:https://www.haomeiwen.com/subject/ljqpbxtx.html