【Swift】UICollectionViewDelegateの使い方。コレクションビューのセルが選択されたときにイベントを発生させる。(Swift 2.1、XCode 7.2)

2020年6月16日

UICollectionViewDelegateとは

前回までの記事でUICollectionView(以下、コレクションビュー)を使ってセルを格子状に並べて表示する方法や並べ方をカスタマイズする方法について説明した。⇒「記事

本記事では、UICollectionViewDelegate(以下、コレクションビューデリテート)を使ってコレクションビューのセルをタップしたときにイベントを発生させる方法について説明する。

コレクションビューデリゲートとは、コレクションビューの中のセルが選択または編集されたときに呼び出されるメソッドが定義されたプロトコルである。

考え方はUITableViewDelegateと同じで、メソッドはすべてOptionalなので必要なものだけ実装すればいい。⇒「UITableViewDelegateの記事

 

データを選択時のイベントを実装する

では、イベント処理を実装してみよう。以降の手順は前回記事の続きから行うので、実装を試してみる人は前回記事を読んでから行うことをお勧めする。⇒「前回記事

Ctrlキーを押しながらコレクションビューをデバイス画面の上にある黄色い丸に運び、ポップアップで表示されたメニューから「delegate」を選択する。これは、コレクションビューのイベントが発生したときは、UIViewControllerのデリゲートメソッドを呼び出すという設定である。

デリゲートのコネクションを確立する

 

UIViewController.swiftを開き、以下のコードのように変更する。

変更箇所は青色網掛けの箇所で、UICollectionViewDelegateプロトコルを適用し、セル選択時に呼び出されるメソッドを実装した。

セル選択時に呼び出されるメソッドの中で、選択されたセルのインスタンスを取得してラベルの値を変更するようにした。

 

TestCollectionViewLayout.swiftは、セルのレイアウトをジグザグではなく並べて表示するためにy座標を更新する位置を移動した。

 

以下は実際のプレイ動画。何となく神経衰弱。