2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

xibで作ったtableViewCellにactionを加える。今回はsegueを実行する。

Last updated at Posted at 2020-03-02

問題

twtterクライアントを作っていて、timeline中の1ツイートをタッチすると、そのツイートのみを表示する画面に遷移する機能を作ろうしていました。
しかし、xibでtableViewのcellを作っていたので、

  • cellから他の画面へのsegueを繋げないこと
  • cell自体を@IBActionでつないでActionを設定すること

ができないことに気がつきました。(prototypecellを使うと、同storyboard内でsegueを繋げるんですけどね。cellを使いまわしたかったのです。)

解決法

実は、tableViewControllerは、cellが選ばれたときの処理を各メソッドを用意しています。
それが、

tableViewController.swift
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}

です。
このメソッド内にかけばOK。

例えば、このページでManual Segueを"toDetailTweet"と言うidentifierで作っておいてから、、

以下のようにperformSegue()メソッドでsenderをcellに指定すればOK

tableViewController.swift
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "toDetailTweet", sender: tableView.cellForRow(at: indexPath))
    }
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?