如何使UITableViewCell突出显示状态持久化

ban*_*ing 10 iphone uitableview

我有一个UITableviewCell.当用户单击该单元格时,我保存索引路径,然后调用cellforrowAtIndexpath方法获取单元格,然后在该单元格上调用SetHighlighted:TRUE.

这工作正常,但问题是当我在桌面视图中上下滚动时,重新出现时所选单元格不会突出显示.如何使突出显示的蓝色颜色保持不变,这样即使向上或向下滚动表格,用户也可以直观地看到他们的选择?

谢谢

Mat*_*uch 19

保存所选单元格的索引路径

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.selectedIndexPath = indexPath;
}
Run Code Online (Sandbox Code Playgroud)

并比较 tableVIew:cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // configure cell
    if ([indexPath isEqual:self.selectedIndexPath]) {
        [cell setHighlighted:YES];
    }
    else {
        [cell setHighlighted:NO];
    }
    return cell;

}
Run Code Online (Sandbox Code Playgroud)

但是,请记住,苹果不鼓励使用细胞突出显示状态来指示所选细胞.你可能应该使用cell.accessoryType = UITableViewCellAccessoryCheckmark;

  • 将单元格设置为突出显示不起作用.我不得不使用`[self.tableView selectRowAtIndexPath:self.selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];` (2认同)