在 OC 中,UITableViewCell 的多选操作如下:
- (IBAction)removeSelectedCells { NSMutableArray *deleteDatas = [NSMutableArray array]; for (NSIndexPath *indexPath in >self.tableView.indexPathsForSelectedRows) { [deleteDatas addObject:self.datas[indexPath.row]]; } [self.datas removeObjectsInArray:deleteDatas]; [self.tableView reloadData]; }
一定要将选中删除的行号保存起来,统一同时删除,防止出现数组下标错误的情况发生。
但是 Swift 中并没有类似
removeObjectsInArray
的方法,只能逐个删除。解决方法:通过repeat while
方法来进行类似 OC 的操作。if let _ = tableView.indexPathsForSelectedRows { repeat { if let indexPath = tableView.indexPathForSelectedRow { datas.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .automatic) } } while tableView.indexPathsForSelectedRows != nil }