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

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

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

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

Xcode

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

Swift

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

Q&A

解決済

1回答

1150閲覧

TableView>CollectionViewのセルをタップで画面遷移!(ヤッタネ!!)(最高)

Y.Kame

総合スコア13

TableView

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/05/04 21:04

前提・実現したいこと

TableView の中の、 CollectionView のセルをタップしたときに画面遷移させたいです。

発生している問題・エラーメッセージ

class TableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate { 〜〜〜〜 //コレクションビューをタップしたときのアクション func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { self.performSegue(withIdentifier: "goSecond", sender: nil)

TableViewCell のクラス(?)の中で画面遷移のコードを記述してもコードエラーでビルドできません((汗)

error

1Value of type 'TableViewCell' has no member 'performSegue'

言ってることはまあなんとなくわかります・・・
[self.] の部分がだめなんだと思い、

class TableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate { 〜〜〜〜 //コレクションビューをタップしたときのアクション func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let vc = UIViewController() vc.performSegue(withIdentifier: "goSecond", sender: nil)

このようなコードで記述をしたところ、コードエラーが消えました(歓喜)(拍手喝采)

"Receiver (<UIViewController: 0x129009600>) has no segue with identifier 'goSecond'"

・・・(は?)(はじゃない)(ごめんなさい)
ストーリーボード上では [Segue] は繋がっているし、[ Identifier ] も設定しているにも関わらず(は?)
上記のエラーが出ます・・・。

試しに、[ segue ] を使わないコードでの画面遷移も試しましたがだめでした。

なにか策はないでしょうか・・・。

TableViewのなかのCollectionViewにデータベースから画像一覧を呼び出して出力させるところまではなんとか(死ぬ気で)(寝てない)(寝ろ)実装することができ、実機でも期待通りの状態までもっていくことができました(感動の涙)(ここで全米が泣く)

ベテランの方・・・、初心者の私が知らないであろう策がありましたらご教授いただければと思います。

投稿文が面白くないのは寝てないからですよろしくお願いします(土下座)

補足情報(FW/ツールのバージョンなど)

Swift
XCDE11

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

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

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

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

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

guest

回答1

0

ベストアンサー

Delegate

swift

1 2// 委任先 3class HogeViewController: UIViewController, UITableViewDataSource ,PiyoDelegate { 4 5 func tableView(_ tableView: UITableView, 6 cellForRowAt indexPath: IndexPath) -> UITableViewCell { 7 8 let cell = // 略 9      10 // 委任先であることを設定する 11 cell.piyoDelegate = self 12 return cell 13 } 14 15   // 実際の処理はProtocolを批准したここで定義する 16   // 値を受け取る、遷移処理を実行する 17 func piyopiyo(str: String) { 18 self.performSegue(withIdentifier: "goSecond", sender: str) 19 } 20 21 private func prepare(for segue: UIStoryboardSegue, sender: Any?) { 22 if let vc = segue.destination as? NewsWebView { 23 let str = sender as? String 24 vc.targetURL = str ?? "https://google.co.jp/" 25 } 26 } 27 28} 29 30protocol PiyoDelegate: AnyObject { 31 func piyopiyo(str: String) 32} 33 34// 委任元 35class FugaTableViewCell: UITableViewCell { 36 37 // 委任元でProtocolをインスタンス化 38 weak var piyoDelegate: PiyoDelegate? 39 40 func collectionView(_ collectionView: UICollectionView, 41 didSelectItemAt indexPath: IndexPath) { 42 let str: String = "PIYO" 43 44 // Delegateメソッドを委任元で実行 45 // コレクションビューセルをタップする/値を送る 46 piyoDelegate?.piyopiyo(str: str) 47 } 48 49} 50

投稿2020/05/05 01:27

編集2020/06/05 03:24
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Y.Kame

2020/05/05 01:48

神様仏様tyobigorou様ナムナム(ありがとうございます)(早朝から)(カッコが逆) 多くは語らん、自分で読み解け、ということですね(かっこいい) なんとなく書いてあることと言いたいことが伝わったのでやってみます!!!! 本当にありがとうございます!!!!!!!!!!!!!!!!!!!!!!!
Y.Kame

2020/05/05 02:21

お疲れ様です!!!tyobigou 様!! 無事!画面遷移することに成功しました!!!! 1点だけ問題が残ったのですが、画面遷移する前に値渡しをするべく // 値渡しの準備をするよ private func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let vc = segue.destination as? NewsWebView { vc.targetURL = sendURL ?? "https://google.co.jp/" } } 上記のようなコードを ViewController に記載しているんですがうまく遷移先に値渡しできていないみたいなんです・・・。 CollectionViewのセルをタップしたときに print(sendURL) をして、中身を確認してみたんですが (sendURL) にはしっかりURLが入っているのでなぜかな〜〜となってしまっております。 文面で簡単に説明できるものであれば教えていただけると嬉しいです(崇拝)
Y.Kame

2020/05/05 03:08

すべて解決しました本当にありがとうございます()() いまいちまだまだ理解不足な点も多いですが、今回のご回答でなんとなくDelegateの使い方(?)の理解が深まった気がします!! 本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問