Objective c didSelectRowAtIndexPath包含多个部分

Objective c didSelectRowAtIndexPath包含多个部分,objective-c,xcode,uitableview,ios5,Objective C,Xcode,Uitableview,Ios5,我的tableview中有4个部分,当按下一行时,我希望将复选标记添加到该行。使用下面的代码,如果我选择一行,其他一些行也会被选中,这是不需要的。我猜它和几个部分有关,但我不知道如何检查或修复它。My_allTagsList是一个包含4个字典的NSMutableArray - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary

我的tableview中有4个部分,当按下一行时,我希望将复选标记添加到该行。使用下面的代码,如果我选择一行,其他一些行也会被选中,这是不需要的。我猜它和几个部分有关,但我不知道如何检查或修复它。My_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];
}

您需要存储选定的索引路径,然后在CellForRowatineXpath函数中,您不需要根据保存的索引路径设置accessoryType。如果更改单元格上的accessoryType,然后滚动,当该单元格被回收时,accessoryType仍将保持选中状态。

@Niels S Sønderbæk为可变数组创建一个属性,并在视图中实例化它。每当有人选择一个单元格时,检查索引路径是否已经在数组中,如果已经在数组中,请删除它并将单元格设置为未选中。否则,添加它并将单元格设置为选中状态。然后在索引路径处的行的单元格中检查索引路径是否在数组中,如果在数组中,则将单元格设置为选中,否则将其设置为未选中。