【Swift/iOS】UITableViewのセルをタップした時のアクションを実装する

UITableViewのセルをタップした時のアクションを実装する方法を解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】Version10.1
【Swift】4.2.1
【iOS】12.1.3
【macOS】High Sherra バージョン 10.13.6

はじめに

UITableViewの基本的な使い方については、別の記事で解説していますので、1から知りたい方はこちらをご覧下さい。

【Swift/iOS】UITableViewの使い方
UITableViewの使い方を超わかりやすく解説します!

当記事の解説は、この記事に従ってUITableViewが実装されている事が前提となっています。

アクションの実装

UITableViewのセルがタップされると、次に示すようなdidSelectRowAtメソッドが呼ばれますので、ここに必要なアクションを実装していきます。

didSelectRowAtはUITableViewDelegateプロトコルで定義されているメソッドになりますので、ViewControllerクラスに記述して下さい。

実装例1:タップされたセルの行番号を取得する

タップされたセルの行番号を取得してデバッグログに出力する例です。indexPath.rowはタップされた行番号を返します。

実装例2:タップされたら別の画面に遷移する。

Segueを使って、別の画面に遷移する実装例です。

実装例1を動かしてみた方はお気づきかと思いますが、タップされた行は標準では選択状態のままになっています。そこで、この実装例2では、別の画面に遷移する前に、選択状態を解除する処理を入れています。選択状態にしておく必然性が無い場合にこの処理が無いとAppleの審査に落ちる事があるようです。

尚、Segueを使った画面遷移についてはこちらの記事で解説していますので、必要な方は合わせてご覧くさい。

【Swift/iOS】Segueを使った画面遷移
Segueとは、storyboard上で画面遷移を表す部品です。この記事では、Segueを使った2種類の画面遷移方法を解説します。ノンコーディングでお手軽に遷移するAction Segueコード上の任意のタイミングで画面遷移させるM...

参考情報

UITableViewのセルがタップされた時に、実は本記事で紹介したdidSelectRowAt以外にも、いくつかのメソッドが呼ばれます。ここでは、それらのメソッドを紹介しておきます。今は何に使うかわからなくても、頭の片隅においておけば将来何かの役にたつかもしれません。

あるcellがタップされた際は以下の順にメソッドが呼ばれます。

shouldHighlightRowAt : ハイライトするかどうか指定
didHighlightRowAt : ハイライトした際に呼ばれる
didUnhighlightRowAt : アンハイライトした際に呼ばれる
willSelectRowAt : 選択状態にするかどうか指定、別のcellを選択させる事もできる
didSelectRowAt : 選択状態にされた際に呼び出される

コメント