didSelectRowAtIndexPath 有几个部分
Posted
技术标签:
【中文标题】didSelectRowAtIndexPath 有几个部分【英文标题】:didSelectRowAtIndexPath with several sections 【发布时间】:2012-05-04 21:30:44 【问题描述】:我的表格视图中有 4 个部分,当按下一行时,我希望在该行中添加一个复选标记。使用下面的代码,如果我选择一行,其他一些行也会被选中,这是不希望的。我猜它与几个部分有关,但我不知道如何检查或修复它。我的 _allTagsList 是一个包含 4 个字典的 NSMutableArray。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSDictionary *dictionary = [_allTagsList objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Tags"];
NSString *selectedTag = [array objectAtIndex:indexPath.row];
if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark)
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
else
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
【问题讨论】:
【参考方案1】:您需要存储选择了哪些 indexPaths,然后在您的 cellForRowAtIndexPath 函数中,您还需要根据这些保存的 indexPaths 设置附件类型。如果您更改单元格上的附件类型然后滚动,因为该单元格被回收,附件类型仍将保持选中状态。
【讨论】:
@Niels Sønderbæk 为可变数组创建一个属性并在视图中实例化它确实加载。每当有人选择一个单元格时,检查索引路径是否已经在数组中,如果它被删除并设置单元格未选中。否则添加它并将单元格设置为选中。然后在索引路径处的行的单元格中检查索引路径是否在数组中,并设置单元格检查,否则将其设置为未检查。以上是关于didSelectRowAtIndexPath 有几个部分的主要内容,如果未能解决你的问题,请参考以下文章
从 didSelectRowAtIndexPath 执行 segue 不起作用
tableView - didSelectRowAtIndexPath 未调用
UITableView didSelectRowAtIndexPath 未被调用
didSelectRowAtIndexPath 中的 NSZombie
didSelectRowAtIndexPath 只被调用一次
tableView 在执行 didSelectRowAtIndexPath 之前由于有一个gestureRecognizer而被隐藏