在屏幕上滚动和返回时如何保留 UITableViewCell 的选定状态

Posted

技术标签:

【中文标题】在屏幕上滚动和返回时如何保留 UITableViewCell 的选定状态【英文标题】:How to preserve selected status for UITableViewCell when scrolling off and back on screen 【发布时间】:2013-03-17 00:10:01 【问题描述】:

我在 UITableView 中有自定义 UITableViewCell 单元格。当用户选择了一个单元格并且该单元格被滚动出屏幕,然后又滚动回到屏幕中时,被选中的单元格是空白的。

我知道在重复使用单元格时我需要设置单元格中的所有值,但我无法弄清楚这一点。

Iamge 1 代表用户选择单元格:

图 2 表示单元格滚动离开屏幕并返回屏幕的时间

(忽略图像模糊的事实,只是保护我的客户数据)

注意:我希望能够选择表格,不建议取消高亮单元格的功能。我实际上希望在将选定的单元格滚动回屏幕时能够看到蓝色单元格。

任何帮助将不胜感激。

编辑:添加一些代码:

// Define a property to keep track of the cell that was selected last using the NSIndexPath
@property (nonatomic, strong) NSIndexPath *lastSelectedIndexPath;

///////

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    // Keeps track of the lastest selected entry
    self.lastSelectedIndexPath = indexPath;


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

    IPCSearchResultTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    [self configureCell:cell atIndexPath:indexPath];

    return cell;


- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath

    // Cast the cell to the custom cell
    IPCSearchResultTableViewCell *searchResultCell = (IPCSearchResultTableViewCell *)cell;

    // RepositoryIndex is a coredata object with information 
    MyCoreDataEntity *entity = [self.fetchedResultsController objectAtIndexPath:indexPath];
    searchResultCell.label1.text = entity.attribute1;
    searchResultCell.label2.text = entity.attribute2;
    searchResultCell.label3.text = entity.attribute3;
    searchResultCell.label4.text = entity.attribute4;

*注意:上面的代码现在似乎可以工作了。我不再遇到这个问题,也不知道为什么*

【问题讨论】:

你能发布一些代码吗?这可能与cellForRowAtIndexPath有关。 还有 didSelectRowAtIndexPath 【参考方案1】:

您是否尝试过维护(选定单元格的)索引路径数组

如果 indexPath 在数组中,则在 cellForRowAtIndexPath 方法中设置 [cell setSelected:] 方法。

【讨论】:

是的,这正是我所做的。

以上是关于在屏幕上滚动和返回时如何保留 UITableViewCell 的选定状态的主要内容,如果未能解决你的问题,请参考以下文章

从另一个片段返回时返回到屏幕上的当前位置

滚动时如何在不同屏幕上调整导航栏的大小

图像未立即在表格视图中加载

返回ListView时保持/保存/恢复滚动位置

如何在每个屏幕上保留一个 kivymd 工具栏?

Objective-C - 滚动时 UISearchController 结果在 UISearchBar 上重叠