【发布时间】:2020-10-02 18:33:54
【问题描述】:
我有一个 UIRefreshControl,它工作得非常好,它在向下滚动时调用该函数,但问题是它没有动画,而且我的代码中没有任何问题,还有其他方法可以吗?没看到导致这个问题?
这是我现在得到的结果
正如你在 GIF 中看到的,UIRefreshControl 上没有动画但仍然调用该函数,
现在这是我的代码
import UIKit
class DummyTableViewController: UITableViewController {
var arr: [Int] = [1,2,3]
var refresher: UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
refresher = UIRefreshControl()
refresher.attributedTitle = nil
refresher.backgroundColor = .clear
refresher.tintColor = .black
refresher.addTarget(self, action: #selector(populate), for: .valueChanged)
tableView.addSubview(refresher)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return arr.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
cell.textLabel?.text = String(arr[indexPath.row])
// Configure the cell...
return cell
}
@objc func populate() {
for i in 1...1000 {
arr.append(i)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
self.refresher.endRefreshing()
self.tableView.reloadData()
}
}
}
我应该如何知道导致此问题的原因以及如何解决?
PS。我编辑了我的代码和 gif 结果,似乎答案和 cmets 对我的第一个代码感到困惑,所以我在结束刷新之前放了一个延迟。
【问题讨论】:
-
populate应该几乎立即完成,并且您正在结束函数中的刷新。 -
@BallpointBen 我编辑了 gif 结果和代码,我在 endRefreshing 之前添加了延迟请检查
标签: ios swift uirefreshcontrol