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

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

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

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

Swift

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

Q&A

解決済

1回答

233閲覧

UIButtonをタップしてCollectionViewControllerへ遷移する方法。

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/04/20 08:25

編集2018/04/25 02:39

HogeCell(UICollectionViewCell)からHugaController(UICollectionViewController)へ遷移する方法が分かりません。

コンソールでボタンのタップ反応は確認できたのですが、
//ボタン 箇所の定義方法が分からないためRUNできません。

原因がわからないため質問します。
よろしくお願いします。

import UIKit class HogeCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red setup() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } let button: UIButton = { let btn = UIButton() btn.setTitle("push", for: .normal) btn.tintColor = UIColor.white btn.backgroundColor = UIColor.green btn.translatesAutoresizingMaskIntoConstraints = false return btn }() private func setup() { addSubview(button) button.addTarget(self, action: #selector(onClickButton(_:)), for: .touchUpInside) button.anchor //...省略してます } //ボタン @objc func onClickButton(_ sender: UIButton){ print("タップ!") let huga = HugaController()//遷移したい先です let hoge = HogeController()//HogeCellをレジスターしてます let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width:frame.width, height:frame.height) huga.collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout) hoge.navigationController?.pushViewController(huga, animated: true) } }

コメントを頂き、数日調べていますが全く分かりません。

//追記しました。
下記の様に書きましたが、セルを乗せているUICollectionViewController(HogeController)からUINavigationControllerを取得できません。
RUNできますが、タップしても無反応です。

//ボタン @objc func onClickButton(_ sender: UIButton){ print("タップ!") let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width:frame.width, height:frame.height) let navigationController = UINavigationController(rootViewController: HogeController()) navigationController.pushViewController(HugaController(collectionViewLayout: layout), animated: true) }

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

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

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

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

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

guest

回答1

0

ベストアンサー

UICollectionViewCellにnavigationControllerというプロパティはありません。
HogeCellが乗っているViewControllerのインスタンスのnavigationControllerプロパティを使って下さい。

【追記】
あと、NavigationControllerで遷移するならpushViewController(_:animated:)じゃないですかね?

投稿2018/04/20 10:36

編集2018/04/20 11:23
fuzzball

総合スコア16731

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

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

退会済みユーザー

退会済みユーザー

2018/04/20 14:30 編集

fuzzball様 ありがとうございます。 本文のコード//ボタン箇所を修正しました。 この場合HogeControllerのインスタンス、ということでしょうか? hoge.navigationController?の様な書き方で問題ないか調べても分かりませんでした。 RUNできますが、遷移できません。見て頂けないでしょうか?
fuzzball

2018/04/20 14:33

新たに生成してもダメですよ。現在画面に表示されているインスタンスです。
退会済みユーザー

退会済みユーザー

2018/04/21 04:37

まだ理解できないので、もっと調べて見ます。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/04/21 08:27 編集

すみません 調べてはいるのですが分かりません。教えて頂けないでしょうか? HogeCellが乗っているViewControllerというのはHogeControllerだと思っているのですが、これを本文のコードの様に新たに生成してはダメなのですか? 見当違いなら申し訳無いですが、生成しないとコード本文に無いのでインスタンスは見当たらないと思いました。
fuzzball

2018/04/21 09:38

・HogeControllerから受け取る ・HogeCellからHogeControllerを探し出す のどちらかで。
退会済みユーザー

退会済みユーザー

2018/04/25 02:41

HogeControllerから受け取りたいので本文に追記した様なボタンのコードを書きましたが、うまく取得できません。
fuzzball

2018/04/25 02:49

let navigationController = UINavigationController(rootViewController: HogeController()) これだと、HogeControllerを新規生成して、それをrootとしたNavigationControllerを新規生成することになります。両方とも新規生成です。
退会済みユーザー

退会済みユーザー

2018/04/25 05:51

()をつけると新規生成になるのですね。ありがとうございます。 let hogeController: HogeController この様に定義するのでしょうか?
fuzzball

2018/04/25 05:56

書いてみれば分かりますが、それではエラーになります。(中身が無いので)
fuzzball

2018/04/25 05:57

当てずっぽうでは、いつまで経っても出来ませんよ。 一から勉強して下さいな。
退会済みユーザー

退会済みユーザー

2018/04/25 06:04

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問