J'ai une UINavigationController
valeur par défaut de c'est navigationBar.prefersLargeTitles = true
.
Je passe cela à false
quand je push
dans une nouvelle scène permet de l'appeler ( DetailsViewController
), en le changeant en viewWillDisappear
.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
Maintenant, DetailsViewController
j'utilise willMove(to parent:)
.
override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.prefersLargeTitles = true
}
Pour revenir aux grands titres.
Observez les instantanés ci-joints de la façon dont iOS 13 le fait avec la façon dont iOS 12 le fait, étant donné que iOS 12 est le comportement correct.
iOS 13 :
iOS 12 :
ios
swift
uinavigationcontroller
uinavigationbar
Mohmmad S
la source
la source
.prefersLargeTitles
du tout lorsque vous poussez un contrôleur de vue de détail vers la pile de navigation, il utilisera automatiquement un petit titre, puis reviendra au grand une fois que vous reviendrez au contrôleur de vue racine, pour autant que je sachelargeTitleDisplayMode
à .automatic
et vous devriez obtenir la transition souhaitée.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Réponses:
Ce que tu fais était toujours mal. Vous devez définir
prefersLargeTitles
à latrue
fois pour la barre de navigation et de ne jamais toucher à nouveau.La façon de changer ce que fait chaque contrôleur de vue sur les gros titres tel qu'il apparaît est que ce contrôleur de vue définit son propre
navigationItem
(dans sonviewDidLoad
) pour avoir le souhaitélargeTitleDisplayMode
. Donc, si le premier vc a.always
et le second a.never
tout ira bien.la source
J'ai eu le même problème et j'ai dû placer un NavigationItem sur le deuxième storyboard de ViewController. Mon NavigationItem a été créé automatiquement par le Segue et son
prefersLargeTitle
dans laviewDidLoad()
n'a pas été fini de créer avant le point de vue est apparu. L'ajout d'un NavigationItem au storyboard a résolu ce problème et m'a permis de définir leprefersLargeTitle
dans le menu des propriétés du storyboard.la source
Dans mon cas, ce problème se produisait lors d'une transition vers un contrôleur de vue qui est un enfant d'un
UITabBarController
. La configurationlargeTitleDisplayMode
du contrôleur de vue enfant n'était pas suffisante pour corriger ce bogue.J'ai résolu le problème en ajoutant un élément de navigation à la scène UITabBarController et en le définissant
largeTitleDisplayMode
comme.never
là-bas.la source