分享

IOS笔记(9)-tableView的左滑删除和多选删除

 睁开眼就变帅 2016-08-01
  • tableView的左滑删除
第一步,准备好数据源和委托

在TestViewController.H接口文件中设置


#import

@interface TestViewController : UIViewController<<span style="color: rgb(97, 34, 174); font-family: Menlo; line-height: normal;">UITableViewDataSource,UITableViewDelegate>

{

    NSMutableDictionary *dataDic; 

    UIBarButtonItem *deletebtn; 

}

@property (nonatomic,retain)UITableView *testTableView;------自定义表视图

@property (nonatomic,retain)NSMutableArray *dataArray;------数据源

 

@end


在TestViewController.m中


- (void)viewDidLoad {

    [super viewDidLoad];

    dataDic = [[NSMutableDictionary alloc]init];

    _dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil]; -------准备好数据


    _testTableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];-------------------初始化表视图

    _testTableView.delegate = self;-----------------设置tableview委托为self

    _testTableView.dataSource = self;--------------设置tableview数据源为self

    [self.view addSubview:_testTableView];

//下面代码在导航栏的右边添加了一个title为编辑的按钮    

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]initWithTitle:@"编辑" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)];

    self.navigationItem.rightBarButtonItem = rightButton;

   

 

}

第二步,展示数据

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 1;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [_dataArray count];

}

- (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];

    }

    cell.textLabel.text = [_dataArray objectAtIndex:indexPath.row];

    return cell;

}


通过上面三个代理方法向uitableview中添加了数据
IOS笔记(9)- <wbr>tableView的左滑删除和多选删除

通过上面两步就实现了数据展示工作,接下来就实现关键的数据删除了。

//设置编辑风格EditingStyle

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

    if (self.testTableView.editing)----通过表视图是否处于编辑状态来选择是左滑删除,还是多选删除。

    {

//当表视图处于没有未编辑状态时选择多选删除

        return UITableViewCellEditingStyleDelete| UITableViewCellEditingStyleInsert;

    }

    else

    {

//当表视图处于没有未编辑状态时选择左滑删除

        return UITableViewCellEditingStyleDelete;

    }

    

}

//根据不同的editingstyle执行数据删除操作(点击左滑删除按钮的执行的方法)

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

    if (editingStyle == UITableViewCellEditingStyleDelete)

    {

        [_dataArray removeObjectAtIndex:indexPath.row];

        // Delete the row from the data source.

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

    }

    else if(editingStyle == (UITableViewCellEditingStyleDelete| UITableViewCellEditingStyleInsert))

    {

        

    }

                                                          

}

//修改左滑删除按钮的title

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return @"何超";

}


启用上面三个代理,并且增加数据删除操作
在一条数据上向右滑动一下
IOS笔记(9)- <wbr>tableView的左滑删除和多选删除
点击"何超",
IOS笔记(9)- <wbr>tableView的左滑删除和多选删除这样子就已经成功实现了左滑删除了

  • tableView的多选删除
第一步,设置editingstyle

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

    if (self.testTableView.editing)----通过表视图是否处于编辑状态来选择是左滑删除,还是多选删除。

    {

return UITableViewCellEditingStyleDeleteUITableViewCellEditingStyleInsert;

    }

    else

    {

         return UITableViewCellEditingStyleDelete;

       

}

当我们[self.testTableView setEditing:YES animated:YES]的时候,

UITableViewCellEditingStyleDelete是出现红色的减号,再点一下就出来滑动时出现的删除按钮;

UITableViewCellEditingStyleInsert是出现红色的加号,应该是插入数据的时候用的吧,没细研究。

UITableViewCellEditingStyleDeleteUITableViewCellEditingStyleInsert最神奇的是两个同时出现时就会出现了前面带圈的多选项

第二步,调用前面带圈的多选项,其实就是调用[self.testTableView setEditing:YES animated:YES],隐藏的话就setEditing:NO;

第三步,实现记录选择或者取消的项,不过没有找到实现这个功能的专门的方法,所以只能折中处理了。

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

{

  //dataDic就是记录选择或者取消的项的字典

    [dataDic removeObjectForKey:[_dataArray objectAtIndex:indexPath.row]];

    if (dataDic.count == 0

{

        deletebtn.enabled = NO;

    }

    else

    {

        deletebtn.enabled = YES;

    }

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

        //indexpath _dataArray的值作为key 插入到dataDic字典中

    [dataDic setObject:indexPath forKey:[_dataArray objectAtIndex:indexPath.row]];

    if (dataDic.count == 0) {

        deletebtn.enabled = NO;

    }

    else

    {

        deletebtn.enabled = YES;

    }


 

}

一个是多选状态下添加刚选择的项,一下移除刚取消的项,有点复杂。
第四步,得到删除的项,处理一下呗。我在toolbar中添加了一个title为删除的按钮,点击该按钮,就会删除选中的项。

deletebtn = [[UIBarButtonItem alloc]initWithTitle:@"删除" style:UIBarButtonItemStylePlain target:self action:@selector()];

    NSMutableArray *Items = [[NSMutableArray alloc]initWithObjects:deletebtn, nil];

    if (self.testTableView.editing)

    {

        [self.navigationController setToolbarHidden:NO animated:YES];

    }

    else

    {

        [self.navigationController setToolbarHidden:YES animated:YES];


    }

    

    

    [self setToolbarItems:Items];

    deletebtn.enabled = NO;

- (void)delbtnClick

{

  //以下代码是处理数据的删除的操作。

    [_dataArray removeObjectsInArray:[dataDic allKeys]];

    [self.testTableView deleteRowsAtIndexPaths:[dataDic allValues] withRowAnimation:UITableViewRowAnimationFade];

    [dataDic removeAllObjects];

----------------------------------------------------------------------------------------

    [self.testTableView setEditing:!self.testTableView.editing animated:YES];

    [self.navigationController setToolbarHidden:YES animated:YES];

    

}

点击编辑,出现选择框

IOS笔记(9)- <wbr>tableView的左滑删除和多选删除选择想要删除的项

IOS笔记(9)- <wbr>tableView的左滑删除和多选删除点击删除,删除以后的效果如下

IOS笔记(9)- <wbr>tableView的左滑删除和多选删除

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多