Broken UISearchBar-Animation in NavigationItem eingebettet

8

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?

    
BartoszCichecki 19.09.2017, 13:30
quelle

1 Antwort

5

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.

%Vor%

Der Grund für den asynchronen Versand ist, dass beim Setzen von navigationItem.searchController inline in der Methode viewDidAppear eine Ausnahme ausgelöst wird:

%Vor%

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.

    
silicon_valley 23.09.2017, 18:05
quelle

Tags und Links