2016-04-30 11 views
0

darzustellen. Ich habe eine UIViewController erstellt, die UISearchController und eine UITableView enthält. Das UITableView zeigt anfänglich alle Ergebnisse an, die dann durch das UISearchController gefiltert werden, wenn der Benutzer beginnt, etwas einzugeben. Ein Klick auf jede Zelle sollte zu einer detaillierten Seite führen. Obwohl dies funktioniert, wenn der Benutzer noch nicht mit der Eingabe begonnen hat, funktioniert es nicht mehr, sobald der Benutzer mit der Eingabe beginnt. Wenn der UISearchController dann beginnt, Ergebnisse zu präsentieren. Das ist alles, was ich in der Konsole:UISearchController überlappt UITableView, wodurch ich nicht in der Lage bin, ViewController für die Zelle

Warning: Attempt to present <MyProject.profileView: 0x13e9df000> on <MyProject.SearchPage: 0x142a1d8f0> which is already presenting <UISearchController: 0x142a1f7c0> 

Das hat mich denken lässt, dass die UISearchController tatsächlich ein zweites UITableView mit den gefilterten Ergebnisse über die erste Präsentation, die ich denke, sollte das sein, was den Fehler verursacht. Ich bin mir jedoch nicht ganz sicher. Diese

ist, wie ich die UISearchController meiner UIViewController hinzufügen:

searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
self.definesPresentationContext = true 
searchController.searchBar.scopeButtonTitles = ["Groups", "People"] 
searchController.searchBar.delegate = self 
tableView.tableHeaderView = searchController.searchBar 

Wenn Sie eine Idee haben, was könnte dieses Problem verursachen und/oder wie könnte ich es möglicherweise beheben, ich es wirklich schätzen würde, wenn Sie könnte mich wissen lassen. Danke im Voraus.

Antwort

0

Nachdem ich 2 Wochen lang bei diesem Problem feststeckte, fand ich heraus, dass die Lösung eigentlich ziemlich einfach war. Ich musste nur die UIViewController von der UISearchController anstatt von der Haupt UIViewController präsentieren. Diese eine Codezeile hat es behoben:

self.searchController.presentViewController(vc, animated: false, completion: nil)