我有一个带动态原型的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;
}
答案 0 :(得分:0)
你可能会在你的cellForRowAtIndexPath方法中覆盖accessoryType - 每次表格即将绘制之前不可见的新行时(如你向上/向下滚动时所描述的那样),这就被调用了。
您还需要在该函数中处理它并在那里更新accessoryType - 否则它将随机重用具有不同accessoryTypes的单元格。
答案 1 :(得分:0)
您只修改单元格的视觉效果,而不是更新数据模型。将选定的索引路径存储在@property
某处,并在accessoryType
内调整cellForRowAtIndexPath
。