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];
}

时间: 2024-10-11 19:32:16

UITableView的多选删除模式的相关文章

不用ChoiceMode实现ListView的长按进入多选删除模式。

今天在仿制一个应用的时候,发现我不会实现listView的长按进入多选这个功能,就找了一下资料..发现找资料用去的时间还是蛮多的...天.理解完之后,自己写了一份代码. 简单来说,就是实施对ListView中item的长按监控,对CheckBox的显示与隐藏进行操作而已.好像有一个ListView中有一个setChoseMode方法..不太清楚怎么用的,等下我再看看研究研究,应该会更简便.本编例子只显示一个基本的想法,详细实现---略.欢迎交流. simple_item_listview.xml

IOS UITableView多选删除功能

UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,比如购物车.收藏列表等. 单行删除功能可以直接使用系统自带的删除功能,当横向轻扫cell时,右侧出现红色的删除按钮,点击删除当前cell.或者让表格进入编辑状态后,点击左侧的红色按钮,右侧出现删除按钮,删除,如下图所示.单行自带删除已经在前面文章中进行过讲解,需要的可以去查阅. 多选删除是点击编辑按钮,让表格进入编辑状态后,每行的左侧出现一个小圆圈,当点击行的时候,可以选中该行或者取消选中该行,当点击按钮确定删除的时候才

tableview 多选删除

镔哥,就直接写了个demo用来做参考: // //  ViewController.h //  TableView多选删除 // //  Created by apple on 14/12/9. //  Copyright (c) 2014年 youdianshang. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITableViewDataSo

【凯子哥带你夯实应用层】使用ActionMode实现有删除动画的多选删除功能

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 ActionMode是3.0之后,官方推荐的一种上下文菜单的实现方式,在之前一直用的是Context Menu,今天这篇文章简单介绍一下ActionMode,并实现多选删除功能. 如果要在ListView这类控件中实现多选,我们可以通过设置setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL)来实现,然后通过设置setMultiChoiceModeListen

iOS TableView多选删除理解2

因为镔哥学习iOS也不是很长时间,所以对很多控件都是一边工作一边学习,现在最近因为项目需求又研究了一下多选删除,其实网上很多这样的demo,但是基本不是纯代码,而且很多方面没有考虑,然后我自己理解上又根基一些demo,自己先了一个,供大家一起学习. 我讲解一下思路就直接代码吧: 思路:一般要实现多选删除 1:前提你要有数据: NSMutableArray *dataArray;//临时用假数据代替 2:你也要有一个存储勾选删除的数据 NSMutableArray *removeList;//勾选

ZP的EXTJS学习笔记(三)——邮箱功能的开发(按钮事件、下拉框、分页、record小图标、整条数据格式处理、定时刷新、record复选删除、分组)

照例,先贴效果图: 本人比较满意,短时间开发的邮箱功能,这是收件箱,还有配套的发件箱与删除箱. 简单说下思路: 1.配置model.store,用的是MVC模式,可参考第一篇学习笔记. 2.页面简单布局: Ext.define('KitchenSink.view.mail.InBox', { extend: 'Ext.grid.Panel', alias : 'widget.inbox', xtype: 'inbox', autoHeight:true, bodyStyle:'width:100

删除模式串中出现的字符

删除模式串中出现的字符,如"welcome to asted",模式串为"aeiou"那么得到的是"wlcm t std". #include<iostream> #include<cstring> using namespace std; char *re(char *str,char *model) { if(str==NULL||model==NULL) return NULL; int Hash[26]={0};

GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除)

GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除) 之前有一个范例,相同的结果可以用两种作法来实践 [GridView] 资料系结表达式?或是RowDataBound事件来作? 我觉得这种教学方法很不错,「同一个题目,有多种解法」 (如同下面的李小龙图片所说的,"熟练度"很重要) 学生反应比较热烈,也可以挑自己惯用的.自己(目前程度)学得会的方式来处理 想要当个职场成功者,李小龙的精神你该学学!http://buzzor

30分钟搞定yii的gridview,你可能只看这一篇就够了 (包含基本配置,下拉筛选,多选删除)

view代码 <?php /* @var $this yii\web\View */ /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \common\models\LoginForm */ use yii\helpers\Url; use yii\helpers\Html; use common\helps\Helps; use common\helps\ArrayHelper; use yii\grid\GridView; us