设置一个在编辑状态下点击可改变图片的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多选删除的更多相关文章

  1. IOS UITableView多选删除功能

    UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,比如购物车.收藏列表等. 单行删除功能可以直接使用系统自带的删除功能,当横向轻扫cell时,右侧出现红色的删除按钮,点击删除 ...

  2. ios UITableView多选删除

    第一步, - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath ...

  3. UITableView划动删除的实现

    对于app应用来说,使用列表的形式展现数据非UITableView莫属.在熟练掌握了用UITableView展示数据以后,是不是也遇到了需要删除数据的需求?是不是觉得在一行数据上划动一下,然后出现一个 ...

  4. iOS UITableView划动删除的实现

    标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainb ...

  5. cxgrid多选删除

    设置OptionsData选项中的Editing设为True,按着Shift和Ctrl可实现多选 SelectionChanged事件 For i:= 0 To cxGrid1DBTableView1 ...

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

        转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992      ActionMode是3.0之后.官方推荐的一种上下文菜单的实现方式,在之前一直用的是Co ...

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

    GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除) 之前有一个范例,相同的结果可以用两种作法来实践 [GridView] 资料系结表达 ...

  8. [习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组

    [习题] FindControl 简单练习--GridView + CheckBox,点选多列数据(复选删除)#3 List或数组 之前的范例,使用字符串.文字来记录将删除的文章ID 后续会有很多小缺 ...

  9. JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)

    需求:数据表格datagrid实现删除当前行和多选删除的功能. html <a href="javascript:void(0)" data-toggle="top ...

随机推荐

  1. EMVTag系列14《支付环境响应数据》

    1. 选择PSE支付环境响应数据 标签 长度 数据域 存在性 9102 A5 变长 FCI数据专用模板 强制 88 1 目录基本文件的SFI 强制 5F2D 2 首选语言 可选 9F11 1 发卡行代 ...

  2. bc命令

    bc 命令:     bc 命令是用于命令行计算器. 它类似基本的计算器. 使用这个计算器可以做基本的数学运算. [tough@localhost *|bc [tough@localhost expr ...

  3. android开发系列之6*0.9不等于5.4

    昨天晚上我们客户端平台上面曝出了一个很奇诡的bug,那就是本来在客户端里面有个商品买6元,但是因为碰巧赶上打9折,这个时候我们很自然的处理就是6*0.9.好吧你以为so easy的事情,其实就出错了, ...

  4. 通过FileWatcher,监听通过web上传的图片,并进行压缩

    需求是这样的,通过web传输过来的图片,无论是JS上传,还是其他的上传方式,都需要生成2张缩略图,分别是用于商品列表的小图small,和用于分享的小图share.基于不同上传方式的不同需求,使用exe ...

  5. golang的哪些坑爷事: package实践

    在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder ...

  6. Javascript是一个事件驱动语言

    面向原型这种说法我没在网上找到

  7. [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)

    介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序 先看一下我们完成的效果图 首先下载xmppframework这个框架,下载 点ZIP下载 接下来,用Xcode新建一个工程 将以下 ...

  8. 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)

    http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...

  9. 【坑】执行Consumer的时候发生java.net.UnknownHostException错误

    [时间]: 2016/4/8 17:30 [问题]: kafka执行Consumer实例的时候,发生了一下错误. kafka配置文件server.properties如下: zookeeper配置文件 ...

  10. MNC - Multicast NetCat

    MNC - Multicast NetCat 使用nc测试udp多播,总是遇到奇怪的问题,搞的一头雾水.偶然发现了MNC,测试了一下果然好用. 下载地址: https://github.com/mar ...