質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

1629閲覧

UITableViewControllerでのセルタップ時の処理に関して

aram_smithy

総合スコア12

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/02/05 16:33

UITableViewControllerでのセルタップ時の処理に関して

初めまして、閲覧ありがとうございます。
最近Swiftの勉強を始め、UITableViewControllerを使ってみようと思ったのですが、表示した個別のセルをタッチした際のイベント処理が上手くできずに困っております。
参考処理を検索しても多くがViewControllerを画面として進めているものが多く、TableViewControllerでの実装方法を詳しく知りたく質問いたしました。
自分が調べている感想ではUITableViewControllerならfunc tableViewが自動的に実行されるイメージがあったので、「実行されました」というログが表示されると思っていたのですが、何か不足な処理等があるのでしょうか?

どなたか助けて頂ければと思いますので宜しくお願い致します。

該当のソースコード

Swift3.1

import UIKit class Page04: UITableViewController { let array:[String] = ["Page02","Page03","Page04"] override func viewDidLoad() { super.viewDidLoad() self.tableView.estimatedRowHeight = 100 self.tableView.rowHeight = UITableViewAutomaticDimension self.setNeedsStatusBarAppearanceUpdate() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override var prefersStatusBarHidden: Bool { return true } override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return array.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Id_Page04_Cell", for: indexPath) cell.textLabel?.text = array[indexPath.row] // indexPath.rowはセルの番号 return cell } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { //UITableViewDelegate: セルがタップされたときの処理 print("実行されました") } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fromageblanc

2018/02/05 17:57

func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
aram_smithy

2018/02/14 17:19

ご回答ありがとうございます。仕事の都合でなかなか報告ができず申し訳ありません。_付きで試してみましたが、特に変化はありませんでした。正直中身がよくわかっていないので、一旦勉強し直そうと思います。
guest

回答2

0

テーブルにセルが表示されている状態までできてるならば、
↓で、できますよ。 TableViewControllerは使ったことがないので原因はわかりませんが、他は全部overrideがついてますので、その辺があれ(原因)かとおもいます。
()の中の表記が違うのはコピー元の情報が古いのかな?、コピー元はちょっと古いUITableViewのメソッドかもしれませんね。

swift

1 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 2 //UITableViewDelegate: セルがタップされたときの処理 3 print("実行されました") 4 }

↓に書き換えて下さい。

swift

1override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 2 print("実行されました") 3 let cell = array[indexPath.row] 4 print(cell) 5 }

投稿2018/02/15 01:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/02/15 02:49

override付けてないとエラー出るのですが、なぜ出ないかというと、IndexPathがNSIndexPathになっているからという、二段階の罠です。 >>コピー元はちょっと古いUITableViewのメソッドかもしれませんね。 _が無いしNSIndexPathを使ってるのでSwift2ですね。
guest

0

didSelectRowAt indexPath: IndexPathが正しいので、別メソッドとして追加しているだけになっていそうです。
didSelectまで入力して自動補完に任せると確実に設定できて良いです。

投稿2018/02/06 00:00

yuutetu

総合スコア88

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aram_smithy

2018/02/14 17:17

ご回答ありがとうございます。仕事の都合でなかなか報告ができず。。 IndexPathで試してもみましたがログははかれませんでした。わざわざ教えて頂けたのに申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問