当您向上或向下滚动时,选择一个UITableViewCell会选择同一位置的其他单元格

时间:2013-10-08 15:28:45

标签: ios uitableview ios7

我有一个带动态原型的UITableView。 我实现了下面的代码,这样当我选择一行时,它将被标记,之前选择的行将被取消标记。 但是,例如,我选择的行显示在屏幕的中间,然后当我向上或向下滚动时,标记另一个单元格(位于屏幕的同一中间位置)。简而言之,每个视图,中间都有一个选定的单元格。 请指教。

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath *oldIndexPath = [self.tableView indexPathForSelectedRow];
    [self.tableView cellForRowAtIndexPath:oldIndexPath].accessoryType = UITableViewCellAccessoryNone;
    [self.tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
    return indexPath;
}

2 个答案:

答案 0 :(得分:0)

你可能会在你的cellForRowAtIndexPath方法中覆盖accessoryType - 每次表格即将绘制之前不可见的新行时(如你向上/向下滚动时所描述的那样),这就被调用了。

您还需要在该函数中处理它并在那里更新accessoryType - 否则它将随机重用具有不同accessoryTypes的单元格。

答案 1 :(得分:0)

您只修改单元格的视觉效果,而不是更新数据模型。将选定的索引路径存储在@property某处,并在accessoryType内调整cellForRowAtIndexPath

相关问题