美文网首页iOS学习开发IOS
IOS UITableView实现单选多选全选删除

IOS UITableView实现单选多选全选删除

作者: 码渣 | 来源:发表于2017-01-24 15:46 被阅读399次

UITableView自带有编辑模式 直接用系统的API可实现多选全选删除,具体可看下面的代码

static bool flag = YES;

// 全选

- (IBAction)allSelect:(id)sender {

if (flag == YES) { // 全选

for (int i = 0; i < self.dataList.count; i++) {

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];

[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];

[self.deleteArr addObject:self.dataList[i]];

}

} else { // 取消全选

for (int i = 0; i < self.dataList.count; i++) {

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

[self.deleteArr removeObject:self.dataList[i]];

}

}

flag = !flag;

}

// 选择(进入编辑状态)或取消选择(退出编辑状态)

- (IBAction)select:(id)sender {

// 在编辑状态下能多选

self.tableView.allowsMultipleSelectionDuringEditing = YES;

self.tableView.editing = ! self.tableView.editing;

self.allSelect.enabled = ! self.allSelect.enabled;

if (self.tableView.editing == NO) {//取消选择

self.deleteItem.enabled = NO;

// 移除到删除数组的数据

[self.deleteArr removeAllObjects];

}

}

// 删除

- (IBAction)delete:(id)sender {

NSLog(@"deleteArr:%@",self.deleteArr);

if (self.tableView.editing) {

// 把数据源数据移除

[self.dataList removeObjectsInArray:self.deleteArr];

// 移除数组里的所有数据

[self.deleteArr removeAllObjects];

}

[self.tableView reloadData];

// 删除之后退出编辑模式

self.tableView.editing = NO;

self.deleteItem.enabled = NO;

self.allSelect.enabled = NO;

}

- (void)viewDidLoad {

[super viewDidLoad];

self.deleteArr = [NSMutableArray array];

self.dataList = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

// 一开始不能全选和删除

self.allSelect.enabled = NO;

self.deleteItem.enabled = NO;

}

// 允许编辑 默认是yes

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

return YES;

}

// 选择要处理的模式

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

return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;

}

// 选中cell

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

if (self.tableView.editing) {

[self.deleteArr addObject:self.dataList[indexPath.row]];

self.deleteItem.enabled = YES;

}

}

// 取消选中

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

if (self.tableView.editing) {

[self.deleteArr removeObject:self.dataList[indexPath.row]];

if (!self.deleteArr.count) {

self.deleteItem.enabled = NO;

}

}

}

相关文章

网友评论

    本文标题:IOS UITableView实现单选多选全选删除

    本文链接:https://www.haomeiwen.com/subject/emizbttx.html