zoukankan      html  css  js  c++  java
  • UITableView的多选删除模式

    1.设置TableView编辑模式打开;

        [_tableView setEditing:YES];

    2.设置接收被选中等待编辑的cell的可变数组,并设置BOOL型变量记录是否处于编辑模式

        NSMutableArray *_waitArray;

        BOOL _isEdit;

    3.在设置切换编辑状态按钮时,设置为系统自带的。self.editButtonItem是一个系统自带的专用按钮。作用是为了设置表格(tableView)的编辑状态,在其点击事件中可以切换编辑状态/非编辑状态

       self.navigationItem.leftBarButtonItem = self.editButtonItem;

    - (void)setEditing:(BOOL)editing animated:(BOOL)animated
    {//系统自带的专用按钮 self.editButtonItem 的点击事件
        //需要重载父类的方法  先调用父类
        [super setEditing:editing animated:YES];
        //这个方法中的editing 会自动改变
        [_tableView setEditing:editing animated:YES];
        //改变编辑状态的时候 清空待删除数组 (退出编辑模式后 不执行删除)
        [_watiArray removeAllObjects];
        //设置专用按钮为全局变量
      if (editing) {
            self.navigationItem.rightBarButtonItem = _deleteBBi;
        } else {
            self.navigationItem.rightBarButtonItem = nil;
        }
    }

    4.在返回编辑模式类型的函数里设置编辑模式为 删除 | 插入 TableView即被设置为多选且在编辑模式下默认第一次点击Cell为被选中,在选中状态下再次点击为取消选中

    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
    }

    5.在cell被选择函数中,在Cell被选中时,先判断是否处于编辑模式。如果是编辑模式,将选中的cell加入等待操作的数组里

    如果不是编辑模式,要设置从选中状态直接跳转为非选中模式,不激发反选函数

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView.editing) {
            //如果是编辑模式,就将点击的cell对应的数据添加到待删除数组中
            [_tempArr addObject:[_dataArr objectAtIndex:indexPath.row]];
        }else{
            //如果不是编辑模式 那就该干嘛干嘛 (取消选中状态)
            [tableView deselectRowAtIndexPath:indexPath animated:YES];
            //非编辑模式下从选中到不被选中 不执行反选激发函数
        }
    }
    6.在Cell的反选函数中,在Cell被取消选择时先判断是否处于编辑模式,如果处于编辑模式将被反选的数据移除等待操作的数组

    如果处于非编辑模式,不执行任何操作

    - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView.editing) {//如果处于编辑状态,就将反选的数据从待删除数组中清除
            [_tempArr removeObjectAtIndex:indexPath.row];
        }else{
            NSLog(@"000");
        }
    }
    7.在删除按钮的点击事件中,执行删除操作删除结束后刷新列表

    - (void)deleteClick
    {
        //数据源中删除 待删除数组包含的元素
        [_dataArray removeObjectsInArray:_waitArray];
       //刷新列表

        [_tableView reloadData];
    }

  • 相关阅读:
    Sql中关于日期的格式化
    linq中存储过程返回集合存在的问题
    当页面请求数据是从静态页中获取的Post方法会报405的错误
    jquery中load方法在ie下会卡住
    jquery用div实现下拉列表的效果
    jquery获取服务器端控件的方法
    【转】jquery实现文本框有提示输入的信息
    toString()方法浅谈
    Object类与上下转型
    多态
  • 原文地址:https://www.cnblogs.com/zdong/p/4388294.html
Copyright © 2011-2022 走看看