Ich habe ein Problem mit der neuen Methode zum Hinzufügen einer Suchleiste zum Navigationselement.
Wie Sie in der folgenden Abbildung sehen können, gibt es zwei UIViewControllers nacheinander und beide haben die Suchleiste. Das Problem ist die Animation, die hässlich ist, wenn die Suchleiste auf dem ersten View-Controller, aber nicht auf dem zweiten sichtbar ist. Der Bereich der Suchleiste bleibt auf dem Bildschirm und verschwindet plötzlich.
Der Code ist sehr einfach (es wurden keine weiteren Änderungen am Projekt vorgenommen):
(Ich schreibe hauptsächlich in C #, daher könnte es in diesem Code Fehler geben.)
ViewController.swift:
%Vor%AppDelegate.swift:
%Vor%Ideen?
Sieht so aus, als müsste Apple die Verwendung der UISearchBar im neuen großen Titelformat noch ausbügeln. Wenn UIViewController
, auf das Sie drücken, nicht navigationItem.searchController
enthält, funktioniert die Animation einwandfrei. Wenn Sie zwischen zwei Instanzen von UIViewController
navigieren, die beide einen searchController-Satz haben, erhalten Sie das Problem, das Sie beschreiben, wo die Höhe der Navigationsleiste springt.
Sie können das Problem lösen (umgehen), indem Sie bei jedem Aufruf von UISearchController
das viewDidAppear
erstellen (anstatt es in loadView
zu erstellen) und navigationItem.searchController
auf null auf viewDidDisappear
setzen.
Der Grund für den asynchronen Versand ist, dass beim Setzen von navigationItem.searchController
inline in der Methode viewDidAppear
eine Ausnahme ausgelöst wird:
Ich weiß, dass dies nur ein Problem ist, aber hoffentlich hilft Ihnen das erst jetzt, bis Apple das Problem mit der Navigation zwischen zwei View-Controllern löst, die beide UISearchController
auf ihrem navigationItem
gesetzt haben.
Tags und Links ios uisearchbar animation ios11