美文网首页
模仿支付宝扣款顺序

模仿支付宝扣款顺序

作者: be2a1fbc39f2 | 来源:发表于2019-03-20 15:30 被阅读0次

    模仿支付宝扣款顺序

    支付宝扣款顺序除了展示可选的扣款方式,还需要拖动并排序扣款方式。


    Simulator Screen Shot - iPhone 8 Plus - 2019-03-20 at 15.16.57.png

    当我们点击switch按钮时,打开就是可编辑状态,关闭就会将tableview隐藏掉。可编辑状态时我们点击右边可拖动,使用的系统自带拖动效果

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        //添加tableview
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(-30, 64, self.view.frame.size.width+30, self.view.frame.size.height-64)];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        [self.view addSubview:_tableView];
        
        //取数据
        NSArray *ary = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PayOrder" ofType:@"plist"]];
        
        //把数据存到模型对象中,然后把对象存到数组中
        _payOrderAry = [NSMutableArray array];
        for (int i=0; i<ary.count; i++) {
            PayOrders *payOrder = [PayOrders ordersWithDic:ary[i]];
            [_payOrderAry addObject:payOrder];
        }
        [_tableView setEditing:YES animated:YES];
    }
    
    #pragma mark 数据源  返回有几行
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return _payOrderAry.count;
    }
    
    #pragma mark 每行显示内容
    -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *idPayOrder = @"order";
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:idPayOrder];
        
        if (cell==nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:idPayOrder];
        }
        PayOrders *orders = _payOrderAry[indexPath.row];
        cell.textLabel.text = orders.name;
        return cell;
    }
    
    #pragma mark 选中行
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 取消选中状态
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }
    
    #pragma mark 设置行高
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 50;
    }
    
    #pragma mark 选择编辑模式,添加模式很少用,默认是删除
    -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return UITableViewCellEditingStyleNone;
    }
    
    #pragma mark 排序 当移动了某一行时候会调用
    //编辑状态下,只要实现这个方法,就能实现拖动排序
    -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
    {
        // 取出要拖动的模型数据
        PayOrders *orders = _payOrderAry[sourceIndexPath.row];
        //删除之前行的数据
        [_payOrderAry removeObject:orders];
        // 插入数据到新的位置
        [_payOrderAry insertObject:orders atIndex:destinationIndexPath.row];
    }
    
    - (IBAction)switchChange:(UISwitch *)sender {
        if([sender isOn]){
            NSLog(@"turn on");
            [_tableView setEditing:YES animated:NO];
            _tableView.hidden = NO;
        }else{
            NSLog(@"turned off");
            _tableView.hidden = YES;
            [_tableView setEditing:NO animated:YES];
        }
    }
    

    了解详细情况可点击下载源码

    相关文章

      网友评论

          本文标题:模仿支付宝扣款顺序

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