美文网首页iOS基础·OC高级篇
iOS初级开发笔记:Block回调,实现简单的绑定支付宝逻辑

iOS初级开发笔记:Block回调,实现简单的绑定支付宝逻辑

作者: 8e750c8f0fae | 来源:发表于2019-03-30 19:29 被阅读0次

绑定支付宝首页和填写资料绑定页之间,

需要在填写页填写好手机号,验证码等,点击确认绑定后跳回到绑定首页。并且绑定按钮变为已绑定按钮暂未绑定label变为输入的支付宝账号。并且点击已绑定按钮会跳转到解绑界面。

整个流程在app上展示为

[站外图片上传中...(image-ce200b-1553945312273)]

一、在传信息的controller内(即填写页的controller内)创建Block:

fillAlipayViewController.h中:

// 创建block
typedef void(^bindAlipayBlock)(NSDictionary *bindDict);

// 监听返回的绑定状态
@property (nonatomic, copy) bindAlipayBlock returnBlock;
  • 这里解释一下创建语句:

    • 我们可以通过关键字typedef来为block起类型名称,然后直接通过类型名进行block的创建;
    • void为返回值;
    • ^bindAlipayBlock为block名称;
    • NSDictionary *bindDict为参数。
  • 因为需要传两个值(支付宝号和绑定状态),所以创建类型是字典,命名也要明确Block是什么类型:

(NSDictionary *bindDict)

fillAlipayViewController.m中:

需创建全局变量:_alipayAccount即为监听输入的支付宝账号全局变量。支付宝账号为字符串:

{
    NSString *_alipayAccount;//支付宝账号
}

在输入完成后点击确认的点击事件中,确定若响应Block实例,则传出字典,字典内写相应的键值,(即将绑定YES状态和支付宝账号传出去):

if (self.returnBlock){

self.returnBlock(@{@"isBind":@"YES",@"alipayAccount":self->_alipayAccount});
}

接着下面是返回上一页绑定首页语句:

[self.navigationController popViewControllerAnimated:YES];

二、在接收信号的controller内(即绑定首页的controller内):

bindAlipayViewController.m中:

创建对应全局变量来接收值:

{
    BOOL _isBind;//绑定状态
    NSString *_bindAlipayAccount;//绑定的支付宝账号
}

跳转方法的实现中:

- (void)jumpToControllerWithType:(NSString *)type{
    if([type intValue]== 1){
        ABFillAlipayViewController *vc=[[ABFillAlipayViewController alloc]init];
        WS(weakself);
        vc.returnBlock = ^(NSDictionary *bindDict) {
            NSLog(@"返回了~");
            // 绑定状态判断
            self->_isBind = [bindDict[@"isBind"] isEqualToString:@"YES"]?YES:NO;
            // 支付宝账号赋值
            self->_bindAlipayAccount = bindDict[@"alipayAccount"];
//            刷新tableView中数据
            [weakself.tableView reloadData];
        };
        
        [self.navigationController pushViewController:vc animated:YES];
    }else if([type intValue]== 2){
        [self.navigationController pushViewController:[[ABRemoveBindAlipayViewController alloc]init] animated:YES];
    }
}

_isBind做判断,等于字符串@“YES”的时候为YES,否则NO。

_bindalipayAccount就等于字典传过来的值。

因为绑定首页使用tableView画的,所以在cell内容中判断,若绑定成功,则做相应改变赋值:

if (_isBind == YES) {
        // 绑定按钮隐藏,显示已绑定按钮
        cell.bindButton.hidden = YES;
        cell.boundButton.hidden = NO;
        // 显示支付宝账号
        cell.subLabel.text = _bindPhoneNumber; 
    }else{
        // 绑定按钮显示,隐藏已绑定按钮
        cell.bindButton.hidden = NO;
        cell.boundButton.hidden = YES;
        // 显示“暂未绑定账号”
        cell.subLabel.text = @“暂未绑定账号”;
    }

相关文章

  • iOS初级开发笔记:Block回调,实现简单的绑定支付宝逻辑

    绑定支付宝首页和填写资料绑定页之间,需要在填写页填写好手机号,验证码等,点击确认绑定后跳回到绑定首页。并且绑定按钮...

  • Objc Block实现分析

    Objc Block实现分析 Block在iOS开发中使用的频率是很高的,使用的场景包括接口异步数据的回调(AFN...

  • Block 回调实现

    Block 回调实现 先跟着我实现最简单的 Block 回调传参的使用,如果你能举一反三,基本上可以满足了 OC ...

  • 系统的不带参数的block

    dispatch_block_t 简单的实现不带参数的回调函数

  • iOS-Block 浅谈

    前言:Block 是开发过程中常用便捷的回调方式,本文简单介绍 Block 一、Block 简介 Block 对象...

  • 探索iOS中Block的实现原理

    Block作为Objective-C中闭包的实现在iOS开发中占有非常重要的地位,尤其是作为回调(callback...

  • iOS block和delegate的区别

      block和代理是iOS开发中实现回调的两种方式,本文主要是对两者的应用场景做一下对比。 1.block简介 ...

  • Block实现iOS回调

    回调函数是我们在编程中经常使用到的,但是很多新手只知道怎么用,不知其所以然。今天我们就来剖析下回调函数到底是个什么...

  • Android时间选择器以及回调的使用

    在iOS开发中使用block回调是很普遍的,当然在Android中也有回调可以使用,但是形式不太一样,更像是iOS...

  • iOS 多播委托

    iOS回调有Delegate,NSNotificationCenter,block,kvo。但是项目中回调 有种情...

网友评论

    本文标题:iOS初级开发笔记:Block回调,实现简单的绑定支付宝逻辑

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