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而被隐藏