【Swift】他クラスにあるCollection Viewを任意のタイミングでリロードする方法

このページでは、あるクラスから他のクラスにあるcollection viewを任意のタイミングでリロードする方法について紹介します。

例えば、ポップアップ画面などで、DBの値を更新した際に元画面(元のクラス)にあるcollection viewを更新したいというようなシーンで使えます。

実装方法

NSNotificationCenterを使うことで、任意のタイミングで、別のクラスにあるCollection Viewをリロードすることができます。

●Collection Viewの更新を通知したいクラス

// "reload"という名前の通知を送信
NotificationCenter.default.post(name: NSNotification.Name("reload"), object: nil)

●Collection Viewがあるクラス

import UIKit

class ViewController: UIViewController {

  @IBOutlet weak var collectionView: UICollectionView!
  override func viewDidLoad() {
    super.viewDidLoad()

    // 受信先の登録("reload"という名前の通知を受け取ると、reloadCollectionView()を呼び出す)
    NotificationCenter.default.addObserver(self, selector: #selector(reloadCollectionView(notification:)), name: NSNotification.Name(rawValue: "reload"), object: nil)
  }

  // コレクションビューの更新(通知された時に呼ばれるメソッド)
  @objc func reloadCollectionView(notification: NSNotification) {
    self.collectionView.reloadData()
  }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA