In unserem Projekt angegeben wir, dassUISearchController.hidesNavigationBarDuringPresentation ignoriert mit scopeButtons in iOS 11 Beta
hidesNavigationBarDuringPresentation = false
auf einem bestimmten UIViewController
‚s UISearchController
. Der searchController hat ein Array von Bereichsüberschriften. Dies funktioniert bis zu iOS 10, aber in iOS 11 Betas sieht es so aus, als ob die falsche Einstellung von hidesNavigationBarDuringPresentation ignoriert wird und unsere Anzeige durcheinander bringt. Um sicherzustellen, dass es nicht aufgrund anderer Faktoren in meinem Projekt ist, erstellte ich ein blankes Testprojekt mit nur einer einzigen UITableViewController
, mit einer UISearchController
initialisiert mit einer anderen einfachen UITableViewController
. Der folgende Code ist in den viewDidLoad()
Verfahren in den Hauptansicht-Controller:
self.title = "Search Bar Scope Test"
let searchViewController = SearchViewController(style: .plain)
searchController = UISearchController(searchResultsController: searchViewController)
searchController!.searchBar.sizeToFit()
tableView.tableHeaderView = searchController!.searchBar
searchController?.hidesNavigationBarDuringPresentation = false
searchController?.searchBar.scopeButtonTitles = ["scope 1", "scope 2", "scope 3", "scope 4", "scope 5"]
Wenn die letzte Zeile scopeButtonTitles
Zuordnung nicht vorhanden ist, hat die Navigationsleiste nicht versteckt bekommen und die Suchleiste bleibt in seiner ursprünglichen Position. Mit dieser Zeile wird jedoch die NavigationBar
ausgeblendet und die searchBar
sowie die Scope-Schaltflächen werden im Hochformat sowohl auf dem iPhone als auch auf dem iPad nach oben verschoben, bleiben aber im Querformat gleich (auch wenn die Scope- Schaltflächen zahlreich sind und nicht passen in einer Zeile).
Hat sonst noch jemand darauf gestoßen? Ist dies ein Fehler oder erwartetes Verhalten (sicherlich nicht unser gewünschtes Verhalten) in iOS 11, und gibt es eine Problemumgehung?
Danke!
Ich habe kein Problem mit den Scope-Schaltflächen, aber meine gesamte Suchleiste springt aus der Tabellenansicht und wird an den oberen Bildschirmrand angehängt. Verwenden von Xcode 9 GM. –
@ChrisPaveglio Endlich habe ich die Ursache des Problems herausgefunden. Siehe meine Antwort unten. – CodePlumber
Danke, aber das ist nicht ganz mein Problem. Ich brauche mehr Zeit, um es herauszufinden b/c Ich denke, es ist mehr einzigartig. Ich habe ein iPad Layout mit 2 Tabellenansichten nebeneinander und 1 hat die Suchleiste und es sollte nie seine Tabellenansicht verlassen. Ich denke, ich muss einige Dinge umgestalten, bevor ich weiter gehe. –