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 ...
随机推荐
- EMVTag系列14《支付环境响应数据》
1. 选择PSE支付环境响应数据 标签 长度 数据域 存在性 9102 A5 变长 FCI数据专用模板 强制 88 1 目录基本文件的SFI 强制 5F2D 2 首选语言 可选 9F11 1 发卡行代 ...
- bc命令
bc 命令: bc 命令是用于命令行计算器. 它类似基本的计算器. 使用这个计算器可以做基本的数学运算. [tough@localhost *|bc [tough@localhost expr ...
- android开发系列之6*0.9不等于5.4
昨天晚上我们客户端平台上面曝出了一个很奇诡的bug,那就是本来在客户端里面有个商品买6元,但是因为碰巧赶上打9折,这个时候我们很自然的处理就是6*0.9.好吧你以为so easy的事情,其实就出错了, ...
- 通过FileWatcher,监听通过web上传的图片,并进行压缩
需求是这样的,通过web传输过来的图片,无论是JS上传,还是其他的上传方式,都需要生成2张缩略图,分别是用于商品列表的小图small,和用于分享的小图share.基于不同上传方式的不同需求,使用exe ...
- golang的哪些坑爷事: package实践
在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder ...
- Javascript是一个事件驱动语言
面向原型这种说法我没在网上找到
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序 先看一下我们完成的效果图 首先下载xmppframework这个框架,下载 点ZIP下载 接下来,用Xcode新建一个工程 将以下 ...
- 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)
http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...
- 【坑】执行Consumer的时候发生java.net.UnknownHostException错误
[时间]: 2016/4/8 17:30 [问题]: kafka执行Consumer实例的时候,发生了一下错误. kafka配置文件server.properties如下: zookeeper配置文件 ...
- MNC - Multicast NetCat
MNC - Multicast NetCat 使用nc测试udp多播,总是遇到奇怪的问题,搞的一头雾水.偶然发现了MNC,测试了一下果然好用. 下载地址: https://github.com/mar ...