今天写项目正好写到了一个实习期让我抓狂的功能-UITableView的多选,想想还是写个Demo记录下比较好。
老规矩先上效果图:
关键的知识点是UITableView的复选功能。
1.定义两个数组
1 | // 用于数据源显示星期 |
2.选择的同时更改selectedWeekArray的值。点击判断selectedWeekArray是否存在点击indexPath.row的值,如果存在就删除不存在则加入。同时刷新tableView
1 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
3.刷新tableView的同时判断当前的selectedWeekArray中存的值用来判断哪些Cell需要勾选。
- 在- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法中实现
1 | if ([self.selectedWeekArray containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]]) { |
如此既能实现点击勾选再次点击取消并且是多选功能。
4.返回传值和push传值。
- 返回传值使用的是delegate(也可使用NSNotificationCenter、block、单例等来实现)
1 | // 自定义代理 |
1 | // 设置代理是在导航栏的确定键中 |
1 | - (void)selectedWeek:(NSMutableArray *)mutableArray { |
5.再次跳转勾选显示
- selectedWeekArray有值说明之前就有勾选过内容,并且赋值给selectedWeekArray。selectedWeekArray在cellForRowAtIndexPath方法中再次进行判断哪些行需要勾选,这样就实现了保留上一次勾选的内容
1 | if (selectArray.count > 0) { |
- 当selectArray没有值是 selectedWeekArray进行初始化
1 | if (self.selectedWeekArray.count == 0) { |
- 有误或则不足之处不吝赐教!(QQ:1402832352)