UITableViewの特定のセルのみUser Interactionを無効にする

スポンサーリンク

ViewController 内に設置した UITableView で、特定のセルのみ User Interaction を無効にしたかった。User Interaction とは、ユーザーがセルをタップして選択したり次の画面に遷移したりなど、ユーザーの動作をトリガーにしてアプリが何かしらアクションを行う機能です。Storyboard で UITableView を使いますと、デフォルトでこの User Interaction が有効になっています。

— 環境 —
Xcode 6.3.2
Swift 1.2

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

UITableView に UITableViewCell を配置

まず各々のセルを識別するために、カスタマイズ用の UITableViewCell を UITableView の中に配置しました。以下画像のようにセル(UITableViewCell)を7個置いてみた。

Screen Shot 2015-07-09 at 16.26.56

それぞれのセルの Attributes Inspector の Identifier に、ユニークな値(FirstCell, SecondCell, ThirdCell … など)を設定しておきます。これで、それぞれのセルを識別できる。

任意のセルを選択後、User Interaction Enabled のチェックを外す

Storyboard 上で User Interaction を無効にさせたいセルを選択した状態で、Attributes Inspector から「User Interaction Enabled」のチェックを外します。

Screen_Shot_2015-07-09_at_22_17_05

目的のセルを選択した状態にしておくことがポイント。UITableView を選択した状態で、User Interaction Enabled のチェックを外すと、UITableView 全体、すなわち全てのセルで User Interaction が無効になってしまいます。

indexPath.row を switch case で判定して cell を返す

割り当てる Swift クラスのファイルのコードは以下のような感じ。

SettingViewController

以上で、例えば Storyboard で上から3番目(ThirdCell)の User Interaction Enabled のチェックを外していたら、その ThirdCell のセルだけ User Interaction を無効にできます。一応目的通り動作はしましたが、もっと良い簡単な方法がありそうな気もします…。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!