自定义单元格的刷新控制问题 - Swift 4 IOS 11
Posted
技术标签:
【中文标题】自定义单元格的刷新控制问题 - Swift 4 IOS 11【英文标题】:Refresh Control Issue with custom cells - Swift 4 IOS 11 【发布时间】:2018-01-22 11:06:41 【问题描述】:我正在构建一个 ios 应用程序,并尝试在我的项目上实现下拉刷新控件。数据从 API 正确获取并显示在我的表上。但是当我下拉刷新时问题就出现了。会发生以下情况:
-
1234563 ,重叠...
如果我快速连续多次下拉,同样的问题会发生。
我相信这是因为 tableview.reloadData() 被快速连续多次调用。但是为什么默认单元格会在我的自定义单元格之上出列?以下是函数中处理下拉的部分代码:
@objc func refreshFunc()
//let offset = scrollView.contentOffset.y
if myRefreshControl.isRefreshing
readJson (activities) in
self.activities = activities
self.tableView.reloadData()
self.myRefreshControl.endRefreshing()
任何帮助将不胜感激。提前致谢
更新:
把代码改成下面的代码好像可以消除错误,但问题是现在我需要往下拉两次才能让表格上的结果更新:
@objc func refreshFunc()
readJson (activities) in
self.activities = activities
self.tableView.reloadData()
self.myRefreshControl.endRefreshing()
请注意,在主线程上运行 reloadData 会得到相同的结果,我仍然需要下拉两次才能更新。
【问题讨论】:
调用主线程解决了吗? 不,没有,请在下面查看 【参考方案1】:请尝试在刷新表格视图之前延迟一些时间,这样可以解决您的问题。
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayTime) [weak self] in
self?.tableView.reloadData()
希望有效果
干杯:)
【讨论】:
是以秒为单位的时间吗? 即使我按照建议添加了一些时间,如果我拖动一定距离,我也会遇到重叠单元格的问题。【参考方案2】:DispatchQueue.main.async
self.tableView.reloadData
试试这个,如果你想改变 UI,你必须在主线程上调用
【讨论】:
还是没有解决问题。当我复制上面描述的内容时,我遇到了同样的问题,我之前也尝试过。如果我在按钮内调用相同的代码,我没有这样的问题,但是使用拉动刷新控制器调用它会引发这个问题。我认为这是因为在调用 tableview.reloadData() 时表正在移动(通过拉动)。但我仍然不知道如何解决这个问题以上是关于自定义单元格的刷新控制问题 - Swift 4 IOS 11的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中使用搜索栏过滤具有自定义单元格的 UITableView 的内容?