如图所示, 是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];
}
你是把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版本不保证有效果。