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

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

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

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

Swift

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

Q&A

解決済

1回答

793閲覧

collectinviewのcellを押した時に画面遷移をしたい

ROKIDOG

総合スコア20

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/08/18 04:07

編集2019/08/25 10:12

collectinviewのcellを押した時に画面遷移をしたいです。

collectinviewのcellを押した時にUserPostViewControllerというクラスへ画面遷移し移動先(UserPostViewController)のcommentTextViewにUserPageViewControllerのcommentText を入れたいです。

performSegueのwithIdentifier が "toPost"であり、遷移先のクラスがUserPostViewControllerであるのも確認しました。

しかしcellを押しても遷移すらしてくれないです。

どういった対処が必要でしょうか??

追記
初めに投稿したものはsegueのdestinationの書き方が間違えており、今回編集済みです。
しかし、遷移できなかったので、アドバイス頂けると幸いです。

class UserPageViewController: UIViewController, UICollectionViewDataSource ,UICollectionViewDelegate{ var posts = [Post]() var commentText :String = "" @IBOutlet var userImageView: UIImageView! @IBOutlet var userDisplayNameLabel: UILabel! @IBOutlet var userIntroductionTextView: UITextView! @IBOutlet var photoCollectionView : UICollectionView! @IBOutlet var postCountLabel: UILabel! @IBOutlet var followerCountLabel: UILabel! @IBOutlet var followingCountLabel: UILabel! func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { commentText = posts[indexPath.row].text performSegue(withIdentifier: "toPost", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "toPost"{ let userPostViewController = segue.destination as! UserPostViewController userPostViewController.commentText = commentText } }

移動先

class UserPostViewController: UIViewController { var commentText:String? @IBOutlet var userImageView: UIImageView! @IBOutlet var userNameLabel: UILabel! @IBOutlet var photoImageView: UIImageView! @IBOutlet var commentTextView: UITextView! @IBOutlet var timestampLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() commentTextView.text = commentText userImageView.layer.cornerRadius = userImageView.bounds.width / 2.0 userImageView.clipsToBounds = true }

イメージ説明
実行後
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

segueについてもう少し勉強した方がいいみたいですね。
https://i-app-tec.com/ios/tap_gesture.html

を参考によく読んでみて下さい。
自分の誤りに気づくと思いますよ。

投稿2019/08/18 07:15

hameji

総合スコア1380

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

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

ROKIDOG

2019/08/20 03:35

回答ありがとうございます。 segueのdestinationの書き方が間違えておりました。 コードを書き換えてみましたが、画面遷移できないです、、 知識不足で申し訳ありませんがアドバイス頂けると幸いです。
hameji

2019/08/20 14:50 編集

どんなエラーが出ているか次第ですが… どこで止まって、どんなエラーが出ているか追加してください。 print(“ここまでok”)などを挟んでどこまで動いてるか見てみるのもいい方法だと思います。 よくあるのが、collectionViewのdelegateを設定していないから didselectを取得できていないなどですかね。 didSelectItemAtの中に何かを書き込んだprint()を用意し、 collectionViewのItemをselectした際にきちんとプリントされてるか確認ください。
ROKIDOG

2019/08/22 09:22

回答ありがとうございます。 エラーは出ず、タップしても何も反応しない状態です、、、、、 collectionviewのdeligateとdidselectも書いてありました。。
hameji

2019/08/23 06:13 編集

collectionViewに内容は表示されている状態でしょうか??? なんで反応しないかよく理解できない状態ですが、、、 省略せずにもっとコードを乗せていただかないとなんとも言えないです。 後、storyboardのconnections inspectorもあった方が 的確なアドバイスできると思います。
ROKIDOG

2019/08/25 10:16

お返事本当にありがとうございます。 storyboardのconnections inspectorと移動先のコードを追加してみました。 collectionview のtext には別のクラスのテキストが表示されています。
hameji

2019/08/25 12:57

よくわからなかったのですが、 UICollectionViewがUIImageViewと書かれているものに繋がれていますが、 コレで正しいのですか??? それともUIImageViewとUILabelを配置した、collectioncellなのですか? また、viewdidload()が省略されていますが、 photoCollectionView.delegate = selfは記載されていますか?
ROKIDOG

2019/08/26 04:50

photoCollectionView.delegate = selfを記載していませんでした! 記載したところうまく繋がってくれました。 本当に本当にここまでありがとうございました! とても助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問