我创建了一个包含5行的简单tableView。并在单元格上使用了UITableViewCellAccessoryCheckmark。
我想按一个按钮,根据“已检查”的细胞进行操作,哪些不是。用户可以选择none,all,1等
如何查看/哪些单元格正在使用UITableViewCellAccessoryCheckmark,哪些单元格正在使用UITableViewCellAccessoryNone?
由于
萨姆
EDIT!
我找到了一种方法来做到这一点......
在didSelectRowAtIndexPath中,我做了以下......
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another view controller.
NSUserDefaults *loginDefaults = [NSUserDefaults standardUserDefaults];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:indexPath];
if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark)
{
oldCell.accessoryType = UITableViewCellAccessoryNone;
} else {
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
if (newCell.accessoryType == UITableViewCellAccessoryNone)
{
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
if ([oldCell.textLabel.text isEqualToString:@"All"]) {
if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark) {
[loginDefaults setObject:@"YES" forKey:@"DownloadAll"];
} else if (oldCell.accessoryType == UITableViewCellAccessoryNone) {
[loginDefaults setObject:@"NO" forKey:@"DownloadAll"];
}
} else if
在房子周围有一点点,但由于我在桌面视图中只有5件事,所以它适用于我想要它做的事情。
现在在操作中,我检查NSUserDefaults中的值并相应地工作
答案 0 :(得分:0)
有关检查哪些元素的信息属于您的模型。由于在滚动时会重复使用表格单元格,因此表格本身无法存储它,因为在任何给定时间内,内存中只有一个或两个单元格比您在屏幕上看到的单元格更多。
所以我建议你在你的模型对象中添加一个属性,并在点击一个单元格时更新它。这允许您在模型上进行任何过滤和查询,而不必尝试强制UI元素存储您的状态,而设计无法可靠地执行。
如果你尝试无论如何,你最终会遇到奇怪的情况,比如出现在你没预料到的行中的复选标记,因为将重复使用单元格实例。
另见问题Question 3240830,它非常相似。