UITableView多选删除
设置一个在编辑状态下点击可改变图片的cell
FileItemTableCell.h
- #import <UIKit/UIKit.h>
- @interface FileItemTableCell : UITableViewCell
- {
- @private
- UIImageView* m_checkImageView;
- BOOL m_checked;
- }
- - (void) setChecked:(BOOL)checked;
- @end
FileItemTableCell.m
- #import "FileItemTableCell.h"
- @implementation FileItemTableCell
- - (void) setCheckImageViewCenter:(CGPoint)pt alpha:(CGFloat)alpha animated:(BOOL)animated
- {
- if (animated)
- {
- [UIView beginAnimations:nil context:nil];
- [UIView setAnimationBeginsFromCurrentState:YES];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
- [UIView setAnimationDuration:0.3];
- m_checkImageView.center = pt;
- m_checkImageView.alpha = alpha;
- [UIView commitAnimations];
- }
- else
- {
- m_checkImageView.center = pt;
- m_checkImageView.alpha = alpha;
- }
- }
- - (void) setEditing:(BOOL)editting animated:(BOOL)animated
- {
- if (self.editing == editting)
- {
- return;
- }
- [super setEditing:editting animated:animated];
- if (editting)
- {
- self.selectionStyle = UITableViewCellSelectionStyleNone;
- // self.backgroundView = [[UIView alloc] init];
- // self.backgroundView.backgroundColor = [UIColor whiteColor];
- // self.textLabel.backgroundColor = [UIColor clearColor];
- // self.detailTextLabel.backgroundColor = [UIColor clearColor];
- if (m_checkImageView == nil)
- {
- m_checkImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Unselected.png"]];
- [self addSubview:m_checkImageView];
- }
- [self setChecked:m_checked];
- m_checkImageView.center = CGPointMake(-CGRectGetWidth(m_checkImageView.frame) * 0.5,
- CGRectGetHeight(self.bounds) * 0.5);
- m_checkImageView.alpha = 0.0;
- [self setCheckImageViewCenter:CGPointMake(20.5, CGRectGetHeight(self.bounds) * 0.5)
- alpha:1.0 animated:animated];
- }
- else
- {
- m_checked = NO;
- // self.selectionStyle = UITableViewCellSelectionStyleBlue;
- self.backgroundView = nil;
- if (m_checkImageView)
- {
- [self setCheckImageViewCenter:CGPointMake(-CGRectGetWidth(m_checkImageView.frame) * 0.5,
- CGRectGetHeight(self.bounds) * 0.5)
- alpha:0.0
- animated:animated];
- }
- }
- }
- - (void)dealloc
- {
- m_checkImageView = nil;
- }
- - (void) setChecked:(BOOL)checked
- {
- if (checked)
- {
- m_checkImageView.image = [UIImage imageNamed:@"Selected.png"];
- self.backgroundView.backgroundColor = [UIColor colorWithRed:223.0/255.0 green:230.0/255.0 blue:250.0/255.0 alpha:1.0];
- }
- else
- {
- m_checkImageView.image = [UIImage imageNamed:@"Unselected.png"];
- self.backgroundView.backgroundColor = [UIColor whiteColor];
- }
- m_checked = checked;
- }
ViewController.m
- #import "ViewController.h"
- #import "FileItemTableCell.h"
- @interface Item : NSObject
- @property (retain, nonatomic) NSString *title;
- @property (assign, nonatomic) BOOL isChecked;
- @end
- @implementation Item
- @end
- @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
- @property (nonatomic,strong)UITableView *tableView;
- @property (retain, nonatomic) NSMutableArray *items;
- @end
- @implementation ViewController
- - (instancetype)init
- {
- self = [super init];
- if (self) {
- UIBarButtonItem *right = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(setEditing:animated:)];
- self.navigationItem.rightBarButtonItem = right;
- UIBarButtonItem *left = [[UIBarButtonItem alloc]initWithTitle:@"删除" style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonPressed)];
- self.navigationItem.leftBarButtonItem = left;
- }
- return self;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds];
- self.tableView.rowHeight = ;
- self.tableView.allowsSelectionDuringEditing = YES;
- self.tableView.dataSource =self;
- self.tableView.delegate = self;
- [self.view addSubview:self.tableView];
- self.items = [NSMutableArray arrayWithCapacity:];
- for (int i=; i<; i++) {
- Item *item = [[Item alloc] init];
- item.title = [NSString stringWithFormat:@"%d",i];
- item.isChecked = NO;
- [_items addObject:item];
- }
- }
- - (void)leftBarButtonPressed {
- NSLog(@"删除");
- NSMutableArray *array = [[NSMutableArray alloc]initWithArray:_items];
- for (int i = ; i < array.count; i ++) {
- Item* item = [array objectAtIndex:i];
- if (item.isChecked) {
- [_items removeObject:item];
- }
- }
- [_tableView reloadData];
- NSLog(@"%ld",_items.count);
- }
- - (void) setEditing:(BOOL)editting animated:(BOOL)animated
- {
- self.navigationItem.rightBarButtonItem.title = _tableView.editing ? @"Edit" : @"Done";
- [_tableView setEditing:!_tableView.editing animated:YES];
- [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.3];
- }
- #pragma mark -
- #pragma mark Table view data source
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- // Return the number of sections.
- return ;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return [_items count];
- }
- - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return UITableViewCellEditingStyleNone;
- }
- // Customize the appearance of table view cells.
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString *CellIdentifier = @"Cell";
- FileItemTableCell *cell = (FileItemTableCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[FileItemTableCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
- cell.textLabel.font = [cell.textLabel.font fontWithSize:];
- }
- cell.accessoryType = UITableViewCellAccessoryNone;
- cell.textLabel.textColor = [UIColor blackColor];
- Item* item = [_items objectAtIndex:indexPath.row];
- cell.textLabel.text = item.title;
- [cell setChecked:item.isChecked];
- return cell;;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- Item* item = [_items objectAtIndex:indexPath.row];
- if (self.tableView.editing)
- {
- FileItemTableCell *cell = (FileItemTableCell*)[tableView cellForRowAtIndexPath:indexPath];
- item.isChecked = !item.isChecked;
- [cell setChecked:item.isChecked];
- }
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
- }
- @end
使用对象感觉较之前的字典好理解些,也简单些
效果图:
2015.6.4更新
最新效果图:添加全选功能
最新Demo下载地址:http://pan.baidu.com/s/1o6DpN0u
修改了个全选的bug:https://github.com/WuJiForFantasy/UITableViewChooseDelete-.git
UITableView多选删除的更多相关文章
- IOS UITableView多选删除功能
UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,比如购物车.收藏列表等. 单行删除功能可以直接使用系统自带的删除功能,当横向轻扫cell时,右侧出现红色的删除按钮,点击删除 ...
- ios UITableView多选删除
第一步, - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath ...
- UITableView划动删除的实现
对于app应用来说,使用列表的形式展现数据非UITableView莫属.在熟练掌握了用UITableView展示数据以后,是不是也遇到了需要删除数据的需求?是不是觉得在一行数据上划动一下,然后出现一个 ...
- iOS UITableView划动删除的实现
标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainb ...
- cxgrid多选删除
设置OptionsData选项中的Editing设为True,按着Shift和Ctrl可实现多选 SelectionChanged事件 For i:= 0 To cxGrid1DBTableView1 ...
- 【凯子哥带你夯实应用层】使用ActionMode实现有删除动画的多选删除功能
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 ActionMode是3.0之后.官方推荐的一种上下文菜单的实现方式,在之前一直用的是Co ...
- GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除)
GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除) 之前有一个范例,相同的结果可以用两种作法来实践 [GridView] 资料系结表达 ...
- [习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组
[习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组 之前的范例,使用字符串.文字来记录将删除的文章ID 后续会有很多小缺 ...
- JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)
需求:数据表格datagrid实现删除当前行和多选删除的功能. html <a href="javascript:void(0)" data-toggle="top ...
随机推荐
- 1008. Elevator (20)
The highest building in our city has only one elevator. A request list is made up with N positive nu ...
- 微信支付开发,再次签名,APP调用
1.商户服务器生成支付订单,先调用[统一下单API]生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付. 再次生成签名的时候,按照接口: https://pay.weixin.q ...
- MVC 中的@Html.DropDownList下拉框的使用
MVC 中的下拉框 实现方式,下面为大家介绍一个我自己认为比较好用的实现方式,而二话不说直接上代码: 第一步: 后台代码 //公共的方法 //在每次需要展示下拉框的时候,需要调用一下这个方法 [数据源 ...
- 失败的数据库迁移UDB
公司采用的是ucloud的云主机,数据库也是架设在云主机上.由于数据越来越多数据查询数据越来越慢,所以我决定往 UDB上迁移.当时考虑的理由如下: (1)云主机底层架设在虚拟机上IO性能有折损,而UD ...
- Jackson如何使JSON输出变得优雅?
本篇文章翻译自:How to enable pretty print JSON output (Jackson) 在这篇文章中,我们将教你如何利用Jackson Library在控制台或者JSP页面优 ...
- 在本地环境用虚拟机win2008 sever搭建VS2013 + SVN 代码版本控制环境
此文仅仅是自己笔记做个备忘.因为自己开发一些中小型的软件经常需要修修改改,特别是winform界面的大改动.经常需要对版本进行管理.而租用分布式服务器和远程服务器都不是自己想要的.本文结合虚拟机 + ...
- [uwp开发]数据绑定那些事(1)
现在是msp候选人,是时候写点技术博客来加分了(实则是个人的心得体会). 注:以下都是个人理解,错误在所难免,欢迎批评指正 以前接触过WPF,只会简单的一些操作,现在在逐渐学习UWP(Universa ...
- xml之XSLT
1.XSLT是什么 XSLT是XSL的子集,XSL是样式表.XSLT的作用:将XML文档转化成HTML,做的是中间转换者. 而主要需要学习的是XSLT(XSLTransformation). 2 ...
- “我爱淘”冲刺阶段Scrum站立会议10
完成任务: 完成了webservice的配置与测试,可以将数据库中的内容解析出来. 计划任务: 在客户端通过查询可以得到想要的书籍内容. 遇到问题: 客户端的内容获取还没有实现.
- Android 上传图片到 Asp.Net 服务器的问题
最近在做一个手机app联合系统管理做的应用程序,管理程序管理数据的发布和增删改查,手机app负责显示和操作业务逻辑这么一个功能. 刚开始路走的都很顺,但是走到通过Android客户端上传图片到Asp. ...