从uitableview中选择多行并删除 [英] select multiple rows from uitableview and delete

查看:79
本文介绍了从uitableview中选择多行并删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在tableview中显示项目列表。我需要一次从表中选择并删除多行,有关如何执行此操作的任何资源

i am displaying a list of items in a tableview.i need to select and delete multiple rows from the table at a time,any resources on how to do this

推荐答案

我假设您的表只有一个部分。您可以相当容易地将此​​解决方案扩展到多个部分。

I'm assuming your table has just one section. You can extend this solution to multiple sections fairly easily.


  • 将NSMutableSet成员 selectedRows添加到管理TableView的UIViewController子类中

  • 中-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 在 selectedRows中切换indexPath.row的成员身份,就像这样:

  • Add an NSMutableSet member "selectedRows" to your UIViewController subclass that manages your TableView
  • in - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath toggle the indexPath.row's membership in "selectedRows", like this:

NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row];
if ( [self.selectedRows containsObject:rowNsNum] )
    [self.selectedRows removeObject:rowNsNum];
else 
    [self.selectedRows addObject:rowNsNum];




  • 直观地表明已选择行(例如,设置单元格的annexType属性,或以其他方式直观地修改您的单元格以表明它是选定的行

  • 向您的UI添加删除按钮,可以在表格部分的标题/页脚,标题栏,任何位置,都连接到deleteRows方法中名为 deleteRows的选择器

  • ,遍历selectedRows集,建立一个indexPaths数组,从中删除这些行您的数据模型,然后调用(使用您喜欢的动画类型):

  • [self.myTableView deleteRowsAtIndexPaths:arrayOfIndexPathsToDelete withRowAnimation:UITableViewRowAnimationTop];    
    

    编辑:
    这是我完整的didSelectRowAtIndexPath方法。正确操作可能需要deselectRowAtIndexPath。

    Here's my full didSelectRowAtIndexPath method. The deselectRowAtIndexPath may be required for correct operation.

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        if ( self.editing )
            return;
    
        [self.myTableView deselectRowAtIndexPath:indexPath animated:YES];
    
        NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row];
        if ( [self.selectedRows containsObject:rowNsNum] )
            [self.selectedRows removeObject:rowNsNum];
        else 
            [self.selectedRows addObject:rowNsNum];
    
        [self.myTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.2];
    }
    

    这篇关于从uitableview中选择多行并删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆