iOS回调函数(block篇)

我们经常用到回调,到底什么是回调函数呢?

回调函数就是由申明函数的类调用函数,而实现却在另一个类中。事实上,通知,block,代理虽然名字不一样但是原理都一样,都是利用回调的机制。

下面就一起了解下block的回调,以block在两个控制器之间的回调传值为例:

首先我们创建一个视图控制器myViewController

我们在控制器中自定义一个block ,代码如下:

#import <UIKit/UIKit.h>


typedef void (^ReturnTextBlock)(NSString *showText);


@interface myViewController : UIViewController


@property(strong,nonatomic)ReturnTextBlock textblock;//申明block


//- (void)returnText:(ReturnTextBlock)block;


@end


#import "myViewController.h"


@interface myViewController ()


@end


@implementation myViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.view.backgroundColor=[UIColor whiteColor];

    UIButton*btn=[UIButton buttonWithType:UIButtonTypeCustom];

    btn.frame=CGRectMake(100, 100, 30, 30);

    btn.backgroundColor=[UIColor blueColor];

    [btn addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];

}


-(void)btnClicked

{

    self.textblock(@"传值到另外一个控制器");//调用block

    [self dismissViewControllerAnimated:YES completion:nil];

}


下面看看block的实现在哪里,他在另外一个控制器中

- (IBAction)ValueSend:(id)sender {

    

    myViewController*my=[myViewController new];

    my.textblock=^(NSString *showText) {

        

    [self.textbtn setTitle:showText forState:UIControlStateNormal];//相当于block的实现,显示在btn上

    

    };

    

    [self presentViewController:my animated:YES completion:nil];

}


上面是一个简单的代码实例,实际上定义一个block变量就像定义一个函数,只有调用block时才会执行{}里面的内容。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值