【Swift】UITableViewの特定のセルだけ選択できないようにする

実装しようとする度に調べていたので、備忘録としてまとめ。
タイトルにもある通り、UITableView の特定のセルだけ選択を無効にする方法です。

参考にさせていただいた記事はこちらから。

UITableViewのセルを選択不可にする方法 – Qiita
https://qiita.com/takashings/items/36b820f09fb19edd7556

 

実装方法は簡単で、セルに値を設定する TableView の関数内で、selectionStylenone を設定するだけです。
サンプルコードは下記の通りです。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "[セルID名]", for: indexPath)
    if indexPath.row == 0 {
        // 1番上のセルを選択不可にする
        cell.selectionStyle = .none
    }

    return cell
}

コメントでも書いてある通り、5行目で UITableView の一番上のセルのみ、選択できないようにしています。
条件式を変更すれば、どのセルを選択不可にできるかは自由に決めることができます。

また、storyboard で変更したい場合は、TableViewCell を選択した状態で、右のメニューの Attributes inspector の項目の Selection の値を、Default から None に変更してください。

スクリーンショットはこちらです。

ただし、xib ファイルでセルを作成していれば、この方法で大丈夫なのですが、そうでない場合、全てのセルが選択不可になってしまうので、できればコードでの指定をお勧めします。

 

なお、若干蛇足ですが、TableView の全てのセルを一括で選択不可にしたい場合は、下記を追加すればOKです。

// TableView の全てのセルを選択不可にする
self.tableView.allowsSelection = false

データを一覧で表示するだけで、クリックしたときにページ遷移しないという場合は、こちらを追加しておくといいと思います。

 

以上、Swift で UITableView の特定のセルだけ選択不可にする方法でした。
個人的には、コードでの指定の方が簡単だったので、こちらでの実装をお勧めします。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG