Ich habe einen UINavigationController
mit Standardwert davon navigationBar.prefersLargeTitles = true
.
Ich schalte das auf, false
wenn ich push
in eine neue Szene gehe, nennen wir es ( DetailsViewController
), indem ich es in die ändere viewWillDisappear
.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
Jetzt DetailsViewController
benutze ich willMove(to parent:)
.
override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.prefersLargeTitles = true
}
Zurück zu großen Titeln.
Beachten Sie die angehängten Schnappschüsse, wie iOS 13 es mit iOS 12 macht, wenn man bedenkt, dass iOS 12 das richtige Verhalten ist.
iOS 13 :
iOS 12 :
ios
swift
uinavigationcontroller
uinavigationbar
Mohmmad S.
quelle
quelle
.prefersLargeTitles
wenn Sie einen Detailansichts-Controller in den Navigationsstapel verschieben. Er verwendet automatisch einen kleinen Titel und kehrt dann, soweit ich weiß, zum großen Titel zurück, sobald Sie zum Stammansichts-Controller zurückkehrenlargeTitleDisplayMode
zu.automatic
und Sie sollten den gewünschten Übergang erhalten.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Antworten:
Was du tust war immer falsch. Sie sollten die Navigationsleiste
prefersLargeTitles
auftrue
einmal einstellen und sie nie wieder berühren.Die Möglichkeit, die Vorgehensweise jedes Ansichtscontrollers bei großen Titeln zu ändern, besteht darin, dass dieser Ansichtscontroller seine eigenen
navigationItem
(in seinenviewDidLoad
) so festlegt , dass sie den gewünschten Wert habenlargeTitleDisplayMode
. Also, wenn der erste VC hat.always
und der zweite hat, wird.never
alles glatt sein.quelle
Ich hatte das gleiche Problem und musste ein Navigationselement auf dem Storyboard des zweiten ViewControllers platzieren. Mein Navigationselement wurde automatisch vom Segue erstellt und
prefersLargeTitle
dasviewDidLoad()
Erstellen wurde nicht abgeschlossen, bevor die Ansicht angezeigt wurde. Das Hinzufügen eines Navigationselements zum Storyboard hat dieses Problem behoben und es mir ermöglicht, dasprefersLargeTitle
im Eigenschaftenmenü des Storyboards festzulegen .quelle
In meinem Fall trat dieses Problem während eines Übergangs zu einem Ansichtscontroller auf, der ein Kind von a ist
UITabBarController
. Die EinstellunglargeTitleDisplayMode
auf dem untergeordneten Ansichtscontroller reichte nicht aus, um diesen Fehler zu beheben.Ich habe durch das Hinzufügen eines Navigationspunkt zum UITabBarController Szene das Problem gelöst und Einstellung
largeTitleDisplayMode
wie.never
dort.quelle