表视图单选和多选的实现
Posted 玉思盈蝶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表视图单选和多选的实现相关的知识,希望对你有一定的参考价值。
1.实现思路:
我的直接思路是修改某一个Cell的样式即可,
那么修改样式需要通过修改对应的数据,
从这里可以推断我们需要给Cell对应的数据设置一个标志位,
当选中的时候来修改该标志位刷新那一行即可
如果是单选实现稍微复杂一些:
单选需要设置一个属性来保存上一次选中的行,
待选中新的行之后需要修改该行,不断维护
2.单选实现的简单代码如下:
/*实现单选 NSIndexPath *temp = self.lastSelected;//暂存上一次选中的行 if(temp && temp!=indexPath)//如果上一次的选中的行存在,并且不是当前选中的这一样,则让上一行不选中 { SelectAssertModel *model = self.selectArray[temp.row]; model.ifSelected = NO;//修改之前选中的cell的数据为不选中 [tableView reloadRowsAtIndexPaths:@[temp] withRowAnimation:UITableViewRowAnimationAutomatic];//刷新该行 } self.lastSelected = indexPath;//选中的修改为当前行 SelectAssertModel *model = self.selectArray[temp.row]; model.ifSelected = YES;//修改这个被选中的一行choon [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];//重新刷新这一行 */
3.多选实现的简单代码如下:
SelectAssertModel *model = self.selectArray[indexPath.row]; if (!model.ifSelected) { model.ifSelected = YES;//修改这个被选中的一行 } else{ model.ifSelected = NO;//修改这个被选中的一行 } [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];//刷新该行 }
4.统计选择的数据:
//"确定"按钮被点击 - (void)rightItemDidClicked:(UIBarButtonItem *)item { //每次进来记得清除数组 [self.selectedArray removeAllObjects]; for (SelectAssertModel *model in self.selectArray) { if (model.ifSelected) { [self.selectedArray addObject:model]; } } NSLog(@"count = %ld",self.selectedArray.count); NSLog(@"count = %@",self.selectedArray); }
以上是关于表视图单选和多选的实现的主要内容,如果未能解决你的问题,请参考以下文章