TableView编辑中实现多行删除方法以及注意

转载 2015年11月17日 16:11:41

在tableView最后的学习编辑中如何实现删除,增加,移动一行都是通过代理方法实现的,对于新手注意的是在实行编辑的时候一定要注意根数据一定要和tablView中的数据保持一致性。因为每次修改tableView的时候他都会刷新tableView中得数据;总之删一个数组的数据自后在删除tableView的一行;

额在ios5.0之后有:

表视图增加新的功能多选,他的默认是NO    self.tableView.allowsMultipleSelectionDuringEditing=YES;他一般写作设置tableView编辑的风格之上。

//选中后的cell索引集合      NSArray *indexpath=self.tableView.indexPathsForSelectedRows; 有了这两种方法就可以很大的程度上减小了逻辑的复杂度:

//先建立一个UIBarButtonItrm的实例,并且要实现一个响应的事件方法

UIBarButtonItem *barItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(Cancel)];

    self.navigationItem.leftBarButtonItem=barItem;

-(void)Cancel{

//把用户打钩的行数的索引集合放到一个数组中

    NSArray *indexpath=self.tableView.indexPathsForSelectedRows;

    NSLog(@”%@”,indexpath);

    for (int i=0; i<indexpath.count; i++) {

//遍历这个数组并把每个元素都取出来

       NSNumber *number=[mulArray objectAtIndex:i];

         int a=[number intValue];

         NSString *str=[mulArray objectAtIndex:a];

        然后在遍历出的元素在数组中删除。这就是我们上面说的要想编辑tableView就的先改变根数据

       [mulArray removeObject:str];

    }

如果在ios5.0之前的话就得用网上的方法,额我就先说一个在发表自己的代码一定要增加可阅读性或者写注释额,这些代码让我这些初学者费了不少的力

其实用了一个组合的代理方法#import “UITableViewDelteMutilRowsViewController.h”

@implementation UITableViewDelteMutilRowsViewController
@synthesize tableview;
@synthesize dataArray;
@synthesize deleteDic;
@synthesize leftButton;
@synthesize rightButton;
#pragma mark -
#pragma mark View lifecycle


- (void)viewDidLoad {
    [super viewDidLoad];
//创建一个跟数据,和一个字典,并把自定的按钮命名
    dataArray = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",nil];
    deleteDic = [[NSMutableDictionary alloc] init];

    rightButton.title = @"编辑";
}

- (IBAction)choseData{
//点击这个按钮的时候触发判断是否处于编辑状态如果不是修改按钮的名字打开编辑状态。反之也是
    if (rightButton.title == @"编辑") {
        rightButton.title = @"确定";
        [self.tableview setEditing:YES animated:YES];
    }
    else {
        rightButton.title = @"编辑";
        [deleteDic removeAllObjects];
        [self.tableview setEditing:NO animated:YES];
    }

}
- (IBAction)deleteFuntion{
//这个一个全部删除全部数据的按钮,把用户点击的数据从数组上和tableView上删除。

    [dataArray removeObjectsInArray:[deleteDic allKeys]];
    
    [self.tableview deleteRowsAtIndexPaths:[NSArray arrayWithArray:[deleteDic allValues]] withRowAnimation:UITableViewRowAnimationFade];
    [deleteDic removeAllObjects];
    
}

- (void)dealloc {
    [leftButton release];
    [rightButton release];
    [deleteDic release];
    [dataArray release];
    [tableview release];
    [super dealloc];
}
#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [dataArray count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    // Configure the cell...
    cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
    return cell;
}


/*//这里设置为可滑动编辑删除
 // Override to support conditional editing of the table view.
 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
 // Return NO if you do not want the specified item to be editable.
 return YES;
 }
 */

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}

#pragma mark -
#pragma mark Table view delegate
//这俩个代理方法是组合的使用当用户点击tableView时触发,而这个字典那个是可以可以把用户点击的行数在数组的根数据中提取出来,并且把他赋予字典的key的值,路径为Value值
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (rightButton.title== @"确定") {
        [deleteDic setObject:indexPath forKey:[dataArray objectAtIndex:indexPath.row]];   
    }
    else {
    }
}
//这个方法是取消编辑时调用,把所对应字典的key值删除。这是取消选中的。
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
    if (rightButton.title == @"确定") {
        [deleteDic removeObjectForKey:[dataArray objectAtIndex:indexPath.row]];
    }
}
@end

iOS-TableView编辑(多行编辑)

TableView编辑(多行编辑)Demo下载地址- 插入链接 [ 下载地址 ]OC的tableview的选中、全选、取消全选demo,(纯代码手动打造) 洲洲哥的github主页。 —...
  • whuizhou
  • whuizhou
  • 2016年04月05日 10:53
  • 821

iOS 开发-实现TableView的编辑功能以删除数据

关键代码如下:
  • CHN_liu
  • CHN_liu
  • 2014年04月27日 00:05
  • 3356

UITableView-编辑模式(多选移动删除)

转自:http://www.cnblogs.com/gcb999/p/3349141.html // // MJViewController.m // UITableView-编辑模式 ...
  • zhanglizhi111
  • zhanglizhi111
  • 2016年07月28日 17:02
  • 699

iOS疯狂详解之tableview编辑添加删除

// //  VkoWLAccountVC.m //  PocketUniversity // //  Created by long on 15-1-14. //  Copyright (...
  • wangLongBlog
  • wangLongBlog
  • 2015年01月15日 14:08
  • 2182

iOS开发系列 ---- UI (TableView的编辑和多项删除操作)

增加、删除和移动效果图: 实现核心代码:#import "ViewController.h"@interface ViewController ()< UITableViewDataSource, ...
  • xiaozhuanddapang
  • xiaozhuanddapang
  • 2017年04月17日 16:32
  • 1092

关于tableView多选删除的编辑设置

-(void)editAction:(UIButton*)sender {     [self.tableView setEditing:YES animated:YES]...
  • taylorlannister
  • taylorlannister
  • 2016年06月06日 14:01
  • 1263

TableView的使用(一)滑动删除,选择删除,多行删除

UITableView-编辑功能-滑动删除 需要实现UITableViewDataSource/UITableViewDelegate协议中的相关方法:   #pragma mark - 启动编...
  • ycw343465134
  • ycw343465134
  • 2014年08月18日 14:06
  • 558

VS2010+QT5编程之QTableView同时删除选中的多行

QTableView同时删除选中的多行,对于新手来说是一个容易出现错误的地方。 下面是一段错误的代码: QModelIndexList indexList = tableview->selecti...
  • godmaycry
  • godmaycry
  • 2015年06月09日 10:21
  • 2221

TableView如何实现多个section的删除

1.首先删除必须先要删除对应的数据然后才对界面进行删除的操作。 2.对于section当删除到section的最后一行row时会出现crash。原因是这里不能仅仅是删除row,还必须要把sectio...
  • binglan520
  • binglan520
  • 2015年09月07日 16:16
  • 498

对与tableViewCell在进行多行删除编辑时,选中状态不出现时解决方案

Bug解决方案
  • sinat_29998157
  • sinat_29998157
  • 2015年10月16日 12:18
  • 717
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TableView编辑中实现多行删除方法以及注意
举报原因:
原因补充:

(最多只允许输入30个字)