iphone开发之实现UITableView多选删除功能详解
来源:互联网 发布:swift 网络请求第三方 编辑:程序博客网 时间:2024/05/17 22:15
很多情况下应用需要批量处理功能,但UITableView并没有类似的功能,但我们可以自己实现。
首先在UITableView的 edittingStyleForRowAtIndexPath函数中,添加如下代码:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
returnUITableViewCellEditingStyleDelete |UITableViewCellEditingStyleInsert;
}
这样我们就可以得到下面的效果:
注意:初始时设置TableView setEditing=YES;
具体实现:
- //
- // CloViewController.m
- // MuTableViewTest
- //
- // Created by Cloay on 12-6-26.
- // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
- //
- #import "CloViewController.h"
- @interface CloViewController ()
- @end
- @implementation CloViewController
- @synthesize dataArray;
- @synthesize selectedDic;
- - (IBAction)rightBtnPressed:(id)sender{
- //显示多选圆圈
- [cloMableView setEditing:YES animated:YES];
- rightBtn.title = @"确定";
- [rightBtn setAction:@selector(rightBtnPressedWithSure:)];
- }
- - (IBAction)rightBtnPressedWithSure:(id)sender{
- //do something with selected cells like delete
- // NSLog(@"selectedDic------->:%@", self.selectedDic);
- int count = [self.selectedDic count];
- if (count > 0 ) {
- for (int i = 0; i < count; i++) {
- NSInteger row = [[self.selectedDic objectAtIndex:i] row];
- [self.dataArray removeObjectAtIndex:row];
- }
- // NSLog(@"self.dataArray:------>:%@", self.dataArray);
- [cloMableView deleteRowsAtIndexPaths:self.selectedDic withRowAnimation:UITableViewRowAnimationFade];
- [self.selectedDic removeAllObjects];
- // NSLog(@"self.selectedDic--------->:%@", self.selectedDic);
- // [cloMableView reloadData];
- rightBtn.title = @"删除";
- [rightBtn setAction:@selector(rightBtnPressed:)];
- [cloMableView setEditing:NO animated:YES];
- }else {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"未选中任何数据!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"重新选择", nil];
- [alert show];
- [alert release];
- }
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- self.dataArray = [[NSMutableArray alloc] initWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", nil];
- self.selectedDic = [[NSMutableArray alloc] init];
- rightBtn = [[UIBarButtonItem alloc] initWithTitle:@"删除" style:UIBarButtonItemStyleBordered target:self action:@selector(rightBtnPressed:)];
- self.navigationItem.rightBarButtonItem = rightBtn;
- }
- - (void)viewDidUnload
- {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
- }
- #pragma -mark
- #pragma tableview data source method
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
- return [self.dataArray count];
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
- return 1;
- }
- #pragma tableView delegate methods
- - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
- return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
- }
- - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
- return YES;
- }
- //添加一项
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- if ([rightBtn.title isEqualToString:@"确定"]) {
- [self.selectedDic addObject:indexPath];
- // NSLog(@"Select---->:%@",self.selectedDic);
- }
- }
- //取消一项
- - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
- if ([rightBtn.title isEqualToString:@"确定"]) {
- [self.selectedDic removeObject:indexPath];
- // NSLog(@"Deselect---->:%@",self.selectedDic);
- }
- }
- //选择后
- - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
- //
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- static NSString *tableViewIdentifier = @"TableViewIdentifier";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableViewIdentifier];
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableViewIdentifier];
- NSInteger row = [indexPath row];
- cell.textLabel.text = [self.dataArray objectAtIndex:row];
- return cell;
- }
- #pragma mark-
- #pragma AlertView delegate method
- - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
- if (buttonIndex == 0) {
- rightBtn.title = @"删除";
- [rightBtn setAction:@selector(rightBtnPressed:)];
- [cloMableView setEditing:NO animated:YES];
- }
- }
- @end
//// CloViewController.m// MuTableViewTest//// Created by Cloay on 12-6-26.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "CloViewController.h"@interface CloViewController ()@end@implementation CloViewController@synthesize dataArray;@synthesize selectedDic;- (IBAction)rightBtnPressed:(id)sender{ //显示多选圆圈 [cloMableView setEditing:YES animated:YES]; rightBtn.title = @"确定"; [rightBtn setAction:@selector(rightBtnPressedWithSure:)];}- (IBAction)rightBtnPressedWithSure:(id)sender{ //do something with selected cells like delete// NSLog(@"selectedDic------->:%@", self.selectedDic); int count = [self.selectedDic count]; if (count > 0 ) { for (int i = 0; i < count; i++) { NSInteger row = [[self.selectedDic objectAtIndex:i] row]; [self.dataArray removeObjectAtIndex:row]; } // NSLog(@"self.dataArray:------>:%@", self.dataArray); [cloMableView deleteRowsAtIndexPaths:self.selectedDic withRowAnimation:UITableViewRowAnimationFade]; [self.selectedDic removeAllObjects]; // NSLog(@"self.selectedDic--------->:%@", self.selectedDic);// [cloMableView reloadData]; rightBtn.title = @"删除"; [rightBtn setAction:@selector(rightBtnPressed:)]; [cloMableView setEditing:NO animated:YES]; }else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"未选中任何数据!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"重新选择", nil]; [alert show]; [alert release]; }}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. self.dataArray = [[NSMutableArray alloc] initWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", nil]; self.selectedDic = [[NSMutableArray alloc] init]; rightBtn = [[UIBarButtonItem alloc] initWithTitle:@"删除" style:UIBarButtonItemStyleBordered target:self action:@selector(rightBtnPressed:)]; self.navigationItem.rightBarButtonItem = rightBtn;}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}#pragma -mark#pragma tableview data source method- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.dataArray count];}- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1;}#pragma tableView delegate methods- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;}- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ return YES;}//添加一项- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if ([rightBtn.title isEqualToString:@"确定"]) { [self.selectedDic addObject:indexPath];// NSLog(@"Select---->:%@",self.selectedDic); }}//取消一项- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{ if ([rightBtn.title isEqualToString:@"确定"]) { [self.selectedDic removeObject:indexPath];// NSLog(@"Deselect---->:%@",self.selectedDic); }}//选择后- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ //}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *tableViewIdentifier = @"TableViewIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableViewIdentifier]; cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableViewIdentifier]; NSInteger row = [indexPath row]; cell.textLabel.text = [self.dataArray objectAtIndex:row]; return cell;}#pragma mark-#pragma AlertView delegate method- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ if (buttonIndex == 0) { rightBtn.title = @"删除"; [rightBtn setAction:@selector(rightBtnPressed:)]; [cloMableView setEditing:NO animated:YES]; }}@end
效果图:
删除后:
有问题请留言,大家一起交流学习!
说明:转载请注明出处!http://blog.csdn.net/cloay/article/details/7697180
- iphone开发之实现UITableView多选删除功能详解
- iphone开发之实现UITableView多选删除功能详解
- iphone开发之实现UITableView多选删除功能详解
- iPhone开发之实现UITableView多选删除功能详解
- iPhone开发之实现UITableView多选删除功能详解
- iPhone开发之UITableView详解(2)
- iPhone开发 UITableView 详解
- UITableView类似Email的多选删除功能实现
- ios系列开发之UITableView实现多行删除
- iOS开发:UITableView实现侧滑删除cell的功能
- iphone开发之UITableView 札记
- iOS开发:UITableview的多选功能实现
- UITableView 多选删除功能 IOS
- IOS UITableView多选删除功能
- iPhone应用开发 UITableView学习点滴详解
- Android通讯录开发之实现删除功能
- iphone/ipad开发之UITableView的方法
- iPhone开发技巧之私有API--- UITableView
- POJ 2141密码
- Git基础 2 ---- Git简介
- 杭电ACM---2000 感触
- hibernate实例HelloWord
- SQL SERVER 使用作业自动备份及删除过往备份
- iphone开发之实现UITableView多选删除功能详解
- 并发进程之间制约关系
- topcon gps 软件下载
- 聚集索引和非聚集索引(整理)
- C# 写Excel 代码
- 【Cocos2d-html5游戏引擎学习笔记(2)】Hello Cocos2d-Html5
- Delphi DbGridEh实现表格没有内容的渐变效果
- Delphi DbgridEh表格内容显示的状态
- Delphi 如何判断在DBGridEh中某格输入数据是否符合约束