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

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

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

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

Swift

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

Q&A

解決済

1回答

1550閲覧

CustomCellクラス内のボタンから値を持たせてpush遷移したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/11/11 06:49

###前提
現在、インスタグラムのようなiOSアプリを製作しています。
今回実装したく、質問させていただくのは、インスタグラムのタイムラインでユーザー名を押したら、その人のプロフィール画面に遷移する動きについてです。

現在はカスタムセルクラス内において、ボタンを押したら、遷移するようにはなりましたが、情報を持って遷移することができずに困っています。

###CustomTableViewCell.swift

swift

1 var delegate: UIViewController? 2 3 @IBAction func moveToProfile(_ sender: Any) { 4 let storyboard = UIStoryboard(name: "Main", bundle: nil) 5 let nextVC = storyboard.instantiateViewController(withIdentifier: "ProfileVC") 6 delegate?.navigationController?.pushViewController(nextVC, animated: true) 7 }

###試したこと
試したことは、UIViewController内において、下記のようにsegueを準備しようとしました。
###ViewCotnroller.swift

swift

1 // Segue 準備 2 override func prepare(for segue: UIStoryboardSegue, sender: Any!) { 3 if (segue.identifier == "toProfile") { 4 let subVC: ProfileViewController = (segue.destination as? ProfileViewController)! 5 // SubViewController のselectedImgに選択された画像を設定する 6 subVC.hisUid = "hogehoge" 7 } 8 }

しかし、indexPathなどが取得できないため、肝心の送るデータを取得できませんでした。また、hogehogeという文字列を送ることもできていなかったので、そもそもこのprepareは動いてないと認識しています。

また、CustomCell内でも同様にprepareを記述してみましたが、やはり情報を送り渡すことはできませんでした。しかし、私の知識だと、この方法でしか、遷移に渡す情報を取得できません。

###お聞きしたいこと・実現したいこと

CustomTableViewCellクラス内において、ボタンを設置し、押した時にそのセル独自の情報とともにshow(push)遷移する方法をご教授いただきたいです。

###補足情報(言語/FW/ツール等のバージョンなど)
データベースはCloud Firestoreを使用しています。

私の理解が足らず、わかりづらい質問となってしまっていたら申し訳ありません。
わかりづらいところは訂正いたしますので、ご指摘いただければと思います。

よろしくお願いいたします。

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

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

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

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

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

Yatima

2017/11/11 09:30

回答依頼ありがとうございます.申し訳ないですがSwiftは知らないので辞退いたします.
退会済みユーザー

退会済みユーザー

2017/11/11 11:09

確認もせず依頼してしまい失礼いたしました。今後ともよろしくお願いいたします。
guest

回答1

0

ベストアンサー

あまり綺麗じゃないけど、やりとりしたい項目を非表示でセルに配置してしまう方法があります。
たとえばhoge,fugaを遷移先に渡すなら以下の通り。
次画面にhoge,fugaをプロバティとして持たせておく必要があります。

CustomTableViewCell.swift

Swift

1 @IBOutlet weak var hoge:UILabel! // isHidden = true 2 @IBOutlet weak var fuga:UILabel! // isHidden = true 3 4 @IBAction func moveToProfile(_ sender: Any) { 5 let storyboard = UIStoryboard(name: "Main", bundle: nil) 6 let nextVC = storyboard.instantiateViewController(withIdentifier: "ProfileVC") 7 8 // 次画面にセット 9 nextVC.hoge = self.hoge 10 nextVC.fuga = self.fuga 11 12 delegate?.navigationController?.pushViewController(nextVC, animated: true) 13 }

投稿2017/11/11 09:32

fromageblanc

総合スコア2724

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

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

退会済みユーザー

退会済みユーザー

2017/11/11 11:51

ご回答いただきありがとうございます。この方法ではprepareForSegueを使わなくても良いのでしょうか?実際に試してみるとValue of type 'UIViewController' has no member 'hoge'というエラーが出てきます... ちなみに受け取り側ではvar hoge = String()のようにしてあります。度々申し訳ないのですが、なにかアドバイスをいただければ幸いです。よろしくお願いいたします。
fromageblanc

2017/11/11 12:08

遷移先のViewControllerの型にキャストしてください ex. let nextVC = storyboard.instantiateViewController(withIdentifier: "ProfileVC") as! ProfileViewController
退会済みユーザー

退会済みユーザー

2017/11/11 12:24

ご指摘ありがとうございます!解決しました!もう一度その部分しっかり勉強しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問