美文网首页
iOS开发之Block

iOS开发之Block

作者: qjhuang | 来源:发表于2017-06-30 17:01 被阅读308次

1.OC中

声明Block
.h文件中
  @interface notNetWorkView : UIView
  @property (nonatomic, copy) void(^notNetWorkBlock)();
  @end                                 

.m文件中
  UIButton *noNetBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 39)];
  [noNetBtn addTarget:self action:@selector(noNetBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  [self addSubview:noNetBtn];

- (void)noNetBtnClick:(UIButton *)send {
    if (self.notNetWorkBlock) {
        self.notNetWorkBlock();
    }
}

在需要使用的页面调用
self.netWorkNotConnectView.notNetWorkBlock = ^(){     
    JWNetworkNotConnectVC *CompletePersonData = [[UIStoryboard storyboardWithName:@"NetWorkConnect" bundle:nil] instantiateViewControllerWithIdentifier:@"NetworkNotConnect"];
    [weakSelf.navigationController pushViewController:CompletePersonData animated:YES];
 };

2.Swift中

import UIKit

typealias btnBlock = (Int) -> () //声明

class RolodexNav1: UIView {
    
    var btnBlock:btnBlock? //初始化
   
    @IBAction private func btnClick(_ sender: UIButton) {
        //tag: 1 排序 2 pop
        if self.btnBlock != nil {
            btnBlock!(sender.tag) //调用
        }
    }

}

3.案例一
block回调

UMengShareManage调用testFunction

UMengShareManage.testFunction(title,desc,shareBack: {(err:Error?) -> () in 
  //用err参数toDoSomething
})

testFunction回调block的实现细节
定义一个block类型,

typealias ShareBack = (Error?) -> ()

设置一个ShareBack类型block全局变量

static var shareBackBlock:ShareBack?

在数据处理完后用block把数据传出来

UMengShareManage.share(plattype: plattype, messageObject: messageObject, viewController: VC) { (data:Any?, error:Error?) in
 
            if shareBackBlock != nil {
                self.shareBackBlock!(error)
            }
}

在testFunction中执行全局block把数据放在shareBack block参数中传回去

UMengShareManage. testFunction(title:String?,desc:String?,shareBack:@escaping ShareBack){
   self.shareBackBlock = {(err:Error?) -> () in
            shareBack(err)
        }
})

4.案例二
swift中闭包回调把数据传过来

相关文章

  • iOS开发-由浅至深学习block

    iOS开发-由浅至深学习block iOS开发-由浅至深学习block

  • iOS开发基础:开发两年的你也不会写的Block

    iOS开发基础:开发两年的你也不会写的Block iOS开发基础:开发两年的你也不会写的Block

  • iOS开发之Block

    1.block是ios中的一种比较特殊的数据类型,可参考C语言的函数指针 是用来保存一段代码,可以在恰当的时间在取...

  • iOS开发之Block

    1.OC中 2.Swift中 3.案例一block回调 UMengShareManage调用testFunctio...

  • iOS 开发之Block

    ios4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调....

  • iOS开发之Block

    前言 block是一个从iOS4后开始引入的代码块语法,能够代替代理来实现反向传值。接下来我将从以下几个方面介绍b...

  • iOS开发之Block

    Block是啥? Block又称作匿名函数,是苹果引入的,在C、C++、Objective-C下均可使用。其他的一...

  • iOS开发之Block

    block的本质 block本质上也是一个OC对象,它内部也有个isa指针。 block是封装了函数调用以及函数调...

  • iOS进阶之Block的本质及原理

    iOS进阶之Block的本质及原理 前言 相信稍微有点开发经验的开发者,应该都对block有一定的了解。刚开始使用...

  • block引用变量造成循环引用解决方案

    参考文章:[ iOS之Block报错:capturing self strongly in this block ...

网友评论

      本文标题:iOS开发之Block

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