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

图片描述

如图所示, 是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];
    }

阅读 5.5k
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版本不保证有效果。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题