加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

iPhone开发之实现UITableView多选删除功能分析

发布时间:2021-11-23 14:10:13 所属栏目:PHP教程 来源:互联网
导读:很多情况下应用需要批量处理功能,但UITableView并没有类似的功能,但我们可以自己实现。 首先在UITableView的 edittingStyleForRowAtIndexPath函数中,添加如下代码: - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForR

很多情况下应用需要批量处理功能,但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  
效果图:
                     
 
删除后:
 
 
 
 
 
代码比较简单,就不过多解释了!

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读