声明一个无返回值的block
typedef void(^onSearch)(NSString *searchText); ////////onSearch 就是这个block的函数指针
2.在控制器中头文件.h中定义block,分两步:
<1>定义成属性
@property (nonatomic) onSearch searchBlock;
<2>定义一个block的setter方法
-(void)setSearchBlock:(void(^)(NSString *searchText)) block;
3.在控制器的实现文件.m中来实现
-(void)setSearchBlock:(void(^)(NSString *searchText)) block {
if (block) {
self.searchBlock = block;
}
}
4.在控制器中使用block实现回调. 当点击search按钮时,将search的文本传递给订阅者
-(void)searchHandler:(id)sender {
if (self.searchBlock) {
self.searchBlock(@"your search keyword")
}
}
5.在订阅者中,接收过来的参数,并做其它操作
YourVC *vc = [YourVC new];
[vc setSearchBlock:^(NSString *searchText) {
NSLog(@"get search keyword")
}]
定义函数的时候,将最后一个参数类型设置成一个方法(例如func abc(handler:(str:String)->Void){ handler("haha") }
调用的时候就可以传block(例如abc({(str:String) in NSLog(str);});
预计会在控制台输出haha