2016-08-08 41 views
5

Update 2 geschaltet:Tab-Leiste Ansicht geht leer, wenn wieder auf mit Suchleiste aktiv

Da die Menschen suchen immer noch auf diese Frage: wissen, dass ich merkte, dass es unmöglich ist, diesen Fehler auf einer tatsächlichen, isoliert iOS-Gerät zu replizieren. Wenn Sie den Search Controller präsentieren, zeigt iOS auch eine Tastatur an, die die Tab-Leiste abdeckt. Um die Registerkarten zu wechseln, müssen Sie müssen die Tastatur, die den Such-Controller auch entlassen entlassen.

Der Grund, warum ich "isoliert" sage, ist, weil ich nicht weiß, ob Sie dies mit einer Bluetooth-Tastatur replizieren können und keine haben, um es zu versuchen. Die iOS-Tastatur möglicherweise nicht mit einer externen Tastatur verbunden

präsentiert

Update:

Ich habe eine viewWillDisappear Überschreibung 1 zum Ansehen und fand einige interessante Ergebnisse:

Wenn die searchbar nicht vorhanden ist, Durch das Wechseln der Tabs wird die Ansicht vor dem Laden der nächsten Ansicht ausgeblendet. Wenn jedoch die searchbar vorhanden ist, wird die Ansicht abgewiesen nicht vor dem nächsten Laden Ansicht


I eine Registerkarte bar Controller an der Wurzel haben, die Laschen 2 aufweist. Jeder geht zu einem Navigationscontroller, der das Gerät zur Ansicht bringt. Hier ist ein grobes Diagramm:

    /-> Navigation Controller -> View 1 
tab bar controller 
        \-> Navigation Controller -> View 2 

Dies funktioniert normal. View 1 verfügt jedoch über einen UISearchController. Der Fehler besteht darin, dass der Suchcontroller angezeigt wird, wenn Sie auf die Suchschaltfläche klicken. Wenn Sie dann in der Registerkartenleiste auf Ansicht 2 klicken und zurück zu Ansicht 1 wechseln, ist der Suchcontroller weiterhin vorhanden und die Ansicht ist schwarz.

Meine aktuelle hacky "reparieren" ist die Tab-Leiste zu deaktivieren, während die Suchleiste offensichtlich ist und wieder aktivieren, wenn der Benutzer "Abbrechen" auswählt. Dies hat 2 Ausgaben:

  1. Es ist jank; der Benutzer sollte in der Lage sein, Tabs zu wechseln, wann immer sie
  2. Es wollen nur wieder aktiviert, wenn die Benutzer Treffer abbrechen, nicht, wenn sie einfach aus der Suche tippen

Wie kann ich dieses Problem beheben? Hier gibt es Bilder von dem, was ich rede

enter image description here

enter image description here

enter image description here

enter image description here

Antwort

6

ich dieses Problem gelöst, indem Sie die Antwort an: UISearchController causes black screen Swift 2.0

I umgesetzt wie e so in viewDidLoad:

self.definesPresentationContext = true 

    searchController.searchResultsUpdater = self 
    searchController.searchBar.delegate = self 
    searchController.dimsBackgroundDuringPresentation = false 
    searchController.definesPresentationContext = true 

Dies löste so ziemlich das Problem für mich. Dann stieß ich auf ein anderes Problem mit dem Versuch, bei didSelectRowAt, die zuvor nie ein Problem gewesen war, zu trennen.Ich löste dies, indem zuerst die UISearchController knallen, dann ein Segue als normal ausführen:

_ = self.navigationController?.popViewController(animated: true)