UITableView删除多行
2015-11-09 14:34
302 查看
主要是-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法,返回1是删除,返回2是插入,3是复选框。
直接来代码吧:
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *_tableView;
NSMutableArray *_dataArray;
NSMutableArray *_arrayForDelete;
NSMutableArray *_indexPathArray;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self prepareData];
[self uiConfig];
}
-(void)prepareData
{
_indexPathArray = [[NSMutableArray alloc]init];
_arrayForDelete = [[NSMutableArray alloc]init];
_dataArray = [[NSMutableArray alloc]init];
for (int i = 0; i<20; i++) {
[_dataArray addObject:[NSString stringWithFormat:@"%d行",i]];
}
}
-(void)uiConfig
{
_tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
//点击右上角edit按钮的时候调用
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[_tableView setEditing:editing animated:animated];
if (editing == NO) {
[_dataArray removeObjectsInArray:_arrayForDelete];
// [_tableView reloadData];//刷新
[_arrayForDelete removeAllObjects];
[_tableView deleteRowsAtIndexPaths:_indexPathArray withRowAnimation:UITableViewRowAnimationFade];
[_indexPathArray removeAllObjects];
}
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 3;
//或者 return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellid = @"cellid";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
}
cell.textLabel.text = _dataArray[indexPath.row];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 80;
}
//选择的时候调用,将需要删除的cell的数据源和索引存起来
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[_arrayForDelete addObject:_dataArray[indexPath.row]];
[_indexPathArray addObject:indexPath];
}
//当反选的时候调用,就是取消选择的时候调用
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[_arrayForDelete removeObject:_dataArray[indexPath.row]];
[_indexPathArray removeObject:indexPath];
}
@end
效果:
点击Edit:
选择:
点击Done:
直接来代码吧:
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *_tableView;
NSMutableArray *_dataArray;
NSMutableArray *_arrayForDelete;
NSMutableArray *_indexPathArray;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self prepareData];
[self uiConfig];
}
-(void)prepareData
{
_indexPathArray = [[NSMutableArray alloc]init];
_arrayForDelete = [[NSMutableArray alloc]init];
_dataArray = [[NSMutableArray alloc]init];
for (int i = 0; i<20; i++) {
[_dataArray addObject:[NSString stringWithFormat:@"%d行",i]];
}
}
-(void)uiConfig
{
_tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
//点击右上角edit按钮的时候调用
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[_tableView setEditing:editing animated:animated];
if (editing == NO) {
[_dataArray removeObjectsInArray:_arrayForDelete];
// [_tableView reloadData];//刷新
[_arrayForDelete removeAllObjects];
[_tableView deleteRowsAtIndexPaths:_indexPathArray withRowAnimation:UITableViewRowAnimationFade];
[_indexPathArray removeAllObjects];
}
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 3;
//或者 return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellid = @"cellid";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
}
cell.textLabel.text = _dataArray[indexPath.row];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 80;
}
//选择的时候调用,将需要删除的cell的数据源和索引存起来
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[_arrayForDelete addObject:_dataArray[indexPath.row]];
[_indexPathArray addObject:indexPath];
}
//当反选的时候调用,就是取消选择的时候调用
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[_arrayForDelete removeObject:_dataArray[indexPath.row]];
[_indexPathArray removeObject:indexPath];
}
@end
效果:
点击Edit:
选择:
点击Done:
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音