ios - UITableView系统自带的批量删除没有选中状态?

 mobiledu2502869467 发布于 2022-10-30 18:29

如图所示, 是UITableView系统自带的批量删除, 但是点击空心圆圈没有选中状态, 这是什么原因? 求大神帮忙解答!

详细代码如下:
1.首先要开启编辑模式

  • (IBAction)multiOperation:(id)sender {
    [self.tableView setEditing:!self.tableView.isEditing animated:YES];

}
2.在viewDidLoad方法中告诉系统允许在编辑模式进行多选操作

// 允许在编辑模式进行多选操作
self.tableView.allowsMultipleSelectionDuringEditing = YES;

3.在监听删除按钮点击方法中获得所有被选中的行,通过遍历所有的行号去出所有的选中模型,将所有选中模型从数组中移除,刷新表格

  • (IBAction)remove {
    // 获得所有被选中的行
    NSArray *indexPaths = [self.tableView indexPathsForSelectedRows];

    // 便利所有的行号
    NSMutableArray *deletedDeals = [NSMutableArray array];
    for (NSIndexPath *path in indexPaths) {

       [deletedDeals addObject:self.deals[path.row]];

    }

    // 删除模型数据
    [self.deals removeObjectsInArray:deletedDeals];

    // 刷新表格
    [self.tableView reloadData];
    }

1 个回答
  • 你是把cell的selectionStyle设置成None了吧。这样系统的选中效果就没了。

    如果不想要系统自带的选中效果,又想要选中的圆圈效果的话,可以重写自定义cell类的setSelected:animated:方法

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated
    {
        [super setSelected:selected animated:animated];
        
        
        for (UIView *subview in self.subviews) {
            if ([subview isKindOfClass:NSClassFromString(@"UITableViewCellEditControl")]) {
                UIControl *control = (UIControl *)subview;
                [control setSelected: selected];
            }
        }
    }

    加入上面的代码就可以了。不过我只在iOS9上测试过,其他iOS版本不保证有效果。

    2022-10-31 21:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有