即使在 tableView reloadData 之后,UITableView 选择也会突出显示

Posted

技术标签:

【中文标题】即使在 tableView reloadData 之后,UITableView 选择也会突出显示【英文标题】:UITableView selection highlighted even after tableView reloadData 【发布时间】:2010-12-15 18:03:39 【问题描述】:

我有一个 UIScrollView 和一个 UITableView 。 UITableView 有 4 个单元格。我使用 UIPageControl 进行分页。

当用户选择时,单元格会突出显示,当用户滚动到下一页时,单元格会保持突出显示。

我尝试了 [tableView reloadData] 并且在调用之后我仍然可以在 UITableView 上看到我不理解的选定行。

我应该重绘 UIScrollView 吗?

有什么方法可以清除选择吗?

【问题讨论】:

【参考方案1】:

当您在另一个视图中包含一个表格视图时,我已经看到了这种行为。如果这样做,则需要手动清除当前选择。您可以通过调用以下命令来做到这一点:

[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:animated];

设置“动画”以满足您的需求。

如果您直接包含表格视图(正如另一个人所指出的,您的表格视图本身已经可以很好地滚动,可能会使您的 UIScrollView 不必要且无法启动),此行为是自动的。

【讨论】:

【参考方案2】:

您是否使用 UIScrollView 和/或 UIPageControl 来滚动 UITableView? UITableView 不需要其中任何一个来滚动。

根据您的描述,您似乎没有正确地重复使用单元格。

添加一些代码,我们将有更多的工作要做。您可能需要向我们展示您的 UITableView 子类 .m 文件。

【讨论】:

我正在使用 UIScrollView 和 UIPageControl。我想我的问题是如果我想要多个页面并且每个页面都有一个 UITableView,我真的需要一个 UIScrollView 吗?我只是拿了“PageControl”示例并添加了一个 UITableView。 我想我明白了。您在 ScrollView 中有一个 TableView,它是由 PageControl 控制的页面来显示 TableView 的同级视图?这个 TableView 是否为您分页到的每个页面填充了一组不同的数据?或者您是否想在不同的页面中显示 TabelView 的 4 行中的每一行? 完全正确。是的,该表为每个页面填充了一组不同的数据。我填充这些数据没有问题,我得到了不同的数据集。问题在于选择,一旦用户选择一个单元格并移动到下一页,在前一页中选择的行将保持选中状态。如果我以某种方式以编程方式取消选择上一页中的选择,也会被取消选择。我希望页面记住选择。感谢您的协助。 -R

以上是关于即使在 tableView reloadData 之后,UITableView 选择也会突出显示的主要内容,如果未能解决你的问题,请参考以下文章

使用 FRC Swift 3 更改 CoreData 后 TableView 不更新(reloadData)

使用 tableView.reloadData() 重新加载 TableView 的问题

Swift:tableView.reloadData() 太慢了

ReloadData() 不刷新 TableView

在后台和 tableView.reloadData() 中获取核心数据对象

为啥在 Core Data container.performBackgroundTask() 之后不触发 tableView.reloadData()