bugfix> 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 件
  • 次を使用して、コレクションビューを更新できます。

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

    また、AlamofireImageなどの単純な画像キャッシュライブラリを使用して、コレクションビュー全体の更新を回避することも検討できます。

  • 単に reloadData() を呼び出す必要があります   collectionView の 、つまり

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

    IBOutlet が必要です   collectionView の  あなたの ViewController で 。

  • @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() も必要です。  あなたが成功した応答を取得したとき。

あなたの答え