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 件
単に
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()
も必要です。 あなたが成功した応答を取得したとき。
関連記事
- Swift 4のUICollectionViewのセクションに要素の最大数を設定する方法は?
- Swift:アイテムを追加するときにUICollectionViewのセルレイアウトの幅を変更する
- Tableviewを適切に再読み込みできないため、iosを迅速に
- Swift:テーブルビューが表示されるたびに新しいコンテンツ(配列など)をリロードする方法は?
- iOSの迅速なTableViewボタンをタッチするとデータをリロードする方法
- Swiftの水平トグルボタンのUIcollectionviewリスト
- Alamofire Swift 4を使用してUICollectionViewに画像を入力する方法
- 動的セクションと行iOS Swift 3を備えたUICollectionView。
- スウィフト3:UICollectionView上のフローティングボタン
次を使用して、コレクションビューを更新できます。
また、AlamofireImageなどの単純な画像キャッシュライブラリを使用して、コレクションビュー全体の更新を回避することも検討できます。