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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

1回答

2083閲覧

LargeTitle特定の画面に入れると別の画面にも影響が及んでしまう

hodoru3sei

総合スコア284

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2020/03/27 07:49

LargeTitle遷移先の画面で導入してみたいと思い入れてみたのですがNavigationで戻った時にLargeTitleの状態を保持してしまっておりLargeTitleを導入してくない画面にまで影響が及んでしましました。
イメージ説明

firstViewのページをLargeTitleではなく普通のNavigationにしたいのですがどうしたら良いでしょうか?
firstViewでは現在Navigationの設定は行なっておらずSceneDelegateでNavigationの設定を入れています。

swift

1func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 2 guard let scene = (scene as? UIWindowScene) else { 3 return 4 } 5 6 let window = UIWindow(windowScene: scene) 7 self.window = window 8 window.makeKeyAndVisible() 9 10 let vc = UINavigationController(rootViewController: ViewController()) 11 UINavigationBar.appearance().barTintColor = .green 12 UINavigationBar.appearance().tintColor = .white 13 UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] 14 window.rootViewController = vc 15 }

SecondViewではviewDidLoadの中で以下の処理を入れています

swift

1 let appearance = UINavigationBarAppearance() 2 appearance.configureWithDefaultBackground() 3 appearance.backgroundColor = .green 4 navigationController?.navigationBar.titleTextAttributes = [ 5 .foregroundColor: UIColor.white 6 ] 7 self.navigationController?.navigationBar.scrollEdgeAppearance = appearance 8 self.navigationController?.navigationBar.standardAppearance = appearance 9 10 //largeTitle表示 11 navigationItem.largeTitleDisplayMode = .always 12 navigationController?.navigationBar.prefersLargeTitles = true

SecondViewのdeinitの中で設定し治すコードを入れてみたのですが挙動に変化ありませんでした。

swift

1 deinit { 2 navigationItem.largeTitleDisplayMode = .never 3 navigationController?.navigationBar.prefersLargeTitles = false 4 5 }

どうすれば元の画面にLargeTitleの変化を伝播させないようにできるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

FirstViewの方で

navigationItem.largeTitleDisplayMode = .never

を設定するとどうですかね?

投稿2020/03/27 07:55

takabosoft

総合スコア8356

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

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

hodoru3sei

2020/03/27 08:29

治りました!!!! ありがとうございます????‍♂️????‍♂️????‍♂️
takabosoft

2020/03/27 08:44

よかったですw navigationItem.largeTitleDisplayModeのデフォルト値がautomaticのようなので、おそらく他の画面の影響を受けてしまっていたのではないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問