Objective c didSelectRowAtIndexPath包含多个部分
我的tableview中有4个部分,当按下一行时,我希望将复选标记添加到该行。使用下面的代码,如果我选择一行,其他一些行也会被选中,这是不需要的。我猜它和几个部分有关,但我不知道如何检查或修复它。My_allTagsList是一个包含4个字典的NSMutableArrayObjective 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
- (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为可变数组创建一个属性,并在视图中实例化它。每当有人选择一个单元格时,检查索引路径是否已经在数组中,如果已经在数组中,请删除它并将单元格设置为未选中。否则,添加它并将单元格设置为选中状态。然后在索引路径处的行的单元格中检查索引路径是否在数组中,如果在数组中,则将单元格设置为选中,否则将其设置为未选中。