2015-01-02 3 views
5

Ich frage mich, ob es möglich ist, eine UISearchDisplayController von einer Schaltfläche in der Navigationsleiste statt von der Standardsuchleiste, die Sie erhalten, wenn Sie den Suchleiste Controller von dort Objekt ziehen zu aktivieren Bibliothek in Xcode. Wie diese Funktionalität in dem Kalender-App:UISearchDisplayController von einer Schaltfläche nicht das Standardsuchfeld

UISearchDisplayController in the Calendar app können Sie auf eine Schaltfläche erhalten eine Aktion zu schießen wie so:

[self.searchDisplayController setActive:YES animated:YES]; 

Aber Sie müssen noch die Suchleiste und es beseelt, von wo aus der Suchleiste ist. Idealerweise würde ich es gerne von oben wie vom Gif kommen lassen.

Jede Hilfe sehr geschätzt. David.

+0

Erstellen Sie einfach eine Suchleiste. Stellen Sie den Rahmen beim Laden auf Offscreen ein. Stellen Sie sicher, dass es eine Auslasseigenschaft hat. Animiere es, wenn der Button geklickt wird und mache den erstenResponder – soulshined

Antwort

7

alte Frage, aber ich habe eine Antwort, so dachte ich, es wert war erneuten Besuch ...

Am Ende habe ich UISearchController statt UISearchDisplayController.

Wenn Sie die Suche aktivieren möchten, wollen aber nicht eine Suchleiste, alles, was Sie tun müssen, um es die Suche

self.searchController.active = YES; 

und dann unter Verwendung aktivieren, weil es keine Suchleiste ist müssen Sie implementieren der presentSearchController: Methoden des UISearchControllerDelegate-Protokolls selbst.

- (void)presentSearchController:(UISearchController *)searchController { 
    [self.window.rootViewController presentViewController:self.searchController animated:YES completion:nil]; 
} 

Es hat nicht ganz die gleiche Animation, aber ich bin sicher, dass die übliche View-Controller Animation api ich mit etwas ähnlichem Arbeits bekommen kann.

+0

Danke für die hilfreiche Antwort. Haben Sie auch das Problem, dass die Tastatur nicht automatisch angezeigt wird? Ich habe versucht, an verschiedenen Stellen 'self.searchController.searchBar 'zu nennen, aber es funktioniert nur, nachdem die präsentierende Animation abgeschlossen ist. Also wird die searchBar zuerst hineingeschoben, dann wird die Tastatur hineingeschoben. Aber ich möchte, dass sie auf einmal animiert werden. Aus welchem ​​Grund auch immer, 'searchBar.canBecomeFirstResponder' ist immer" NEIN ", bevor die präsentierende Animation abgeschlossen ist. Irgendeine Idee? –

+0

Damit es wie in der Kalender-App funktioniert, habe ich den Such-Controller vom selben View-Controller präsentiert, der ihn besitzt (dh 'self' anstelle von' self.window.rootViewController') und auch 'searchController.hidesNavigationBarDuringPresentation = false gesetzt 'und' searchController.searchBar.searchBarStyle = .prominent'. – maxkonovalov