iOS基础·OC高级篇

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

2019-03-30  本文已影响0人  8e750c8f0fae

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

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

整个流程在app上展示为

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

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

fillAlipayViewController.h中:

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

// 监听返回的绑定状态
@property (nonatomic, copy) bindAlipayBlock returnBlock;
(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 = @“暂未绑定账号”;
    }
上一篇 下一篇

猜你喜欢

热点阅读