iphone开发之实现UITableView多选删除功能详解

发布时间:2016-12-8 16:01:43 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"iphone开发之实现UITableView多选删除功能详解",主要涉及到iphone开发之实现UITableView多选删除功能详解方面的内容,对于iphone开发之实现UITableView多选删除功能详解感兴趣的同学可以参考一下。

很多情况下应用需要批量处理功能,但UITableView并没有类似的功能,但我们可以自己实现。 首先在UITableView的 edittingStyleForRowAtIndexPath函数中,添加如下代码: - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{     returnUITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert; } 这样我们就可以得到下面的效果: 注意:初始时设置TableView setEditing=YES; 具体实现: [cpp] view plaincopyprint? //   //  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

上一篇:解释器模式(行为)
下一篇:POJ 2209求和最大

相关文章

相关评论