关于界面切换 用blcok 回调 数据

 最近又开始 研究 block 这个东西,自己也在试一试自己动手编写 实现 将B界面的输入的文字 回调给A界面。首先要思考的是 在那个界面 定义回调函数,先A到B界面,B输入一段文字,返回到A, A得到 文字。如果我们使用委托代理的方法,可以知道 是在 A界面写委托方法,在B界面声明一个委托属性。B界面执行委托方法,传参。A委托方法就会执行相应的操作。 我也发现 用block的思路和 委托代理是一样的

看代码:

 BlockViewController *viewController = [[BlockViewControlleralloc]init];

 //定义回调函数的内容 当执行blokc 方法的时候就会执行 里面的方法

    viewController.showBlock = ^(NSString *str){

       showLabel.text = str;

    };

//跳入B界面

  [selfpresentViewController:viewControlleranimated:YEScompletion:nil];



//在B界面声明一个 block

@interface BlockViewController :UIViewController


@property (nonatomic,copy)void(^showBlock)(NSString* );


//void(^showBlock)(NSString* );



@end



//在.m文件里面执行

- (IBAction)returnButtonAction:(id)sender {

    self.showBlock(showLabel.text);

    [selfdismissViewControllerAnimated:YEScompletion:nil];

}



当然这是非常简单的使用,正在研究复杂的使用。。


要达到那种 才算比较的理想 做出想支付宝 SDK那种 回调block 最好,我参看了支付宝 SDK 我试着去模仿 去执行,首相 将block 作为参数,放入函数里面,

放入之前 要声明,不声明 会出问题 ,为什么 我不知啊

typedefvoid(^MyBlock)(NSDictionary *resultDict);


@interface BlockViewController :UIViewController


@property (nonatomic,copy)void(^showBlock)(NSString* );  //名字为showBlock 的属性

//void(^showBlock)(NSString* );

-(void)callBackTheNum:(NSInteger )num num2:(NSInteger )num3 result:(MyBlock)myblock;  //我不知道为什么 放到这里这样就不行了 必须要在前面声明。最后查看规则 其实也可以这么写 void(^)(NSDictionary *resultDict)myblock 来代替(MyBlock)myblock 就不用再前面声明 看个人喜好。

@end


在函数里面 执行 方法执行完后 把结果作为 回调的参数 放入 执行回调 函数 ,这样 A界面 调用 callBack..的这个方法 及 让B 去做 A需要的 事而且做完了还把结果告诉了A ,节省了很多。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值