NewMovieViewController. storyboardとDetailNewMovieViewController. storyboardがあり
NewMovieViewControllerのカスタムセル内のボタンタップ時に遷移します。
遷移先,遷移元は両方NavigationContollerの配下にあるのですが
パターン1 let storyboard: UIStoryboard = UIStoryboard(name: "DetailNewMovieViewController", bundle: nil) let nextVC = storyboard.instantiateViewController(withIdentifier: "DetailNewMovieViewController") as! DetailNewMovieViewController nextVC.modalPresentationStyle = .fullScreen self.navigationController?.pushViewController(nextVC, animated: true)
こちらのStoryboard間の遷移は可能なのですが
おそらくNavigationContollerを経由していないのでNavigationBarがありません。
戻るボタンはあり、Title指定するとLargeTitleの場所に表示され明らかにおかしいです。
(nextVC.navigationController?.setNavigationBarHidden(false, animated: true)等は変化無し)
LabelをわかりやすくNavigationBarの下に配置しています。
パターン2 異なるStoryboard間での画面遷移、値渡しの方法 let storyboard: UIStoryboard = UIStoryboard(name: "DetailNewMovieViewController", bundle: nil) if let navigationVC = storyboard.instantiateInitialViewController() as? UINavigationController, let nextVC = navigationVC.topViewController as? DetailNewMovieViewController { nextVC.title = "test" self.present(navigationVC, animated: true, completion: nil) }
そのため遷移先がNavigationControllerを使用している場合を参考に実行
上手くは行きますがModal遷移よりはPush遷移の方がいいので
self.navigationController?.pushViewController(navigationVC, animated: true)
にしたところ
Pushing a navigation controller is not supported
となりました。Storyboard で NavigationController を間に挟んだ画面遷移/余談だけど Storyboard を分けて遷移する場合も書いておく
こちらでエラーについて解説していたので実行しましたがパターン1にもちろんなりました。
疑問点のまとめ
なぜNavigationBarはあのような見た目になってしまうのですか?
パターン2の場合Push遷移でできる方法はあるのでようか?
Identifier関連のエラーは出てないのでStoryboardIDのミス等は無いと思われます。
長くなってしまい申し訳ありませんが、他の方の参考になればとも思っております。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー