嗨,我想在操作后自动加载数据。 为此,我正在使用“拉至刷新”控制器。 当用户在那段时间被拉动时,我要自动加载。 我写下面的代码
@IBOutlet var scrool: UIScrollView!
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
// Add refresh control for the Home page scroll view.
self.refreshControl.tintColor = UIColor.appcolor
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl.addTarget(self, action: #selector(refresh(sender:)), for: UIControl.Event.valueChanged)
self.scrool.isScrollEnabled = true
self.scrool.alwaysBounceVertical = true
scrool.addSubview(refreshControl)
}
@objc func refresh(sender:AnyObject) {
// Code to refresh table view
self.getHomePageApi()
refreshControl.endRefreshing()
}
答案 0 :(得分:0)
您需要在self.getHomePageApi()
或viewDidLoad
中致电viewDidAppear
。如果您决定在viewDidLoad
中使用,函数将仅调用1次。也可以使用viewDidAppear
。 viewDidAppear
在提供VC时运行。您在注释行// Code to refresh table view
中说。如果使用tableview并且需要在函数中使用reloaddata
。它类似于:
func getHomePageApi(){
// Do something
DispatchQueue.main.async {
self.yourtableview.reloadData()
}
}
为什么我们使用Dispatch
。由于加载数据是在后台线程中进行的,因此UICollectionView.reloadData()
仅可在主线程中使用。