実装しようとする度に調べていたので、備忘録としてまとめ。
タイトルにもある通り、UITableView の特定のセルだけ選択を無効にする方法です。
参考にさせていただいた記事はこちらから。
UITableViewのセルを選択不可にする方法 – Qiita
https://qiita.com/takashings/items/36b820f09fb19edd7556
実装方法は簡単で、セルに値を設定する TableView の関数内で、selectionStyle
に none
を設定するだけです。
サンプルコードは下記の通りです。
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 の特定のセルだけ選択不可にする方法でした。
個人的には、コードでの指定の方が簡単だったので、こちらでの実装をお勧めします。
ご参考になれば幸いです。