swift重装数据UICollectionView

时间:2018-05-25 08:28:20

标签: swift

var refreshControl: UIRefreshControl = UIRefreshControl()

override func viewDidLoad() {
    super.viewDidLoad()
    collectionview.delegate = self
    collectionview.dataSource = self
    refreshControl.addTarget(self, action: #selector(HomeViewController.refreshData), for: UIControlEvents.valueChanged)
    fetchPosts()
    collectionview.addSubview(refreshControl)

}

@objc func refreshData() {
    refreshControl.endRefreshing()

}

我有一个带有一些ViewController的UITabBar。在ViewController中,我有一个UICollectionView,其中有用户的图像。每个用户都可以加载图像,并在控制器中使用UICollectionView查看此图像。加载照片后,在UICollectionView中它不会出现,因为必须刷新数据。在函数RefreshData中,我该怎么做才能刷新UICollectionView?

3 个答案:

答案 0 :(得分:0)

您可以使用以下方式刷新集合视图:

@objc func refreshData() {
    collectionview.reloadData()
    refreshControl.endRefreshing()
}

您还可以考虑使用简单的图像缓存库,例如AlamofireImage,以避免对此进行完整的集合视图刷新。

答案 1 :(得分:0)

您只需要为reloadData()拨打collectionView,即

@objc func refreshData() 
{
    self.collectionView.reloadData()
    refreshControl.endRefreshing()
}

IBOutletcollectionView必须有ViewController

答案 2 :(得分:0)

@objc func refreshData() 
{
    self.arr.removeAll()
    fetchPosts()
    self.collectionView.reloadData()
    refreshControl.endRefreshing()
}

API调用

func fetchPosts() {
    self.arr.removeAll()
    //API call code..
    //after success response you need to reload collectionView
}

您需要在需要刷新时调用api,以便获得更新的数据。在API响应中,当您获得成功的响应时,还需要self.collectionView.reloadData()