嗨我想在动作后自动加载数据。对于那个我使用pull to Refresh控制器。当用户拉开那个时间时它只是加载我想要自动加载。我写下面的代码
@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()
}
你需要在self.getHomePageApi()
或viewDidLoad
中调用viewDidAppear
。如果你决定使用viewDidLoad
函数只会调用一次。你也可以使用viewDidAppear
。当VC出现时,viewDidAppear
运行。你在评论行// Code to refresh table view
中说。如果你使用tableview,你需要在你的函数中使用reloaddata
。它类似于:
func getHomePageApi(){
// Do something
DispatchQueue.main.async {
self.yourtableview.reloadData()
}
}
为什么我们使用Dispatch
。因为加载数据运行后台线程,所以必须仅从主线程使用UICollectionView.reloadData()
。