2013-02-11 7 views
6

Ich habe eine UITableView mit einer searchDisplayController implementiert. Ich habeAusblenden UITableView, wenn searchResultsTableView angezeigt

tableView.backgroundColor = [UIColor clearColor]; 

und

self.searchDisplayController.searchResultsTableview.backgroundColor = [UIColor clearColor]; 

Wenn ich Text in das Suchfeld eingeben, werden die Anzeige der Suchergebnisse in Ordnung, aber wie der Hintergrund der resultierenden Tabelle transparent ist, ich sehe meine tableview und Auf der tableview wird die Suchergebnis-Tabelle angezeigt. Ich möchte die tableView ausblenden, wenn das searchField mit der Bearbeitung begonnen hat. Ich habe versucht,

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller 
shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    [tableView setHidden:YES]; 
    [self filterContentForSearchText:searchString 
           scope:[[self.searchDisplayController.searchBar scopeButtonTitles] 
             objectAtIndex:[self.searchDisplayController.searchBar 
                selectedScopeButtonIndex]]]; 

    return YES; 
} 

Aber es verbirgt die SearchBar mit dem Tableview. Wie man es repariert?

+0

Wo u UISearchBar hinzufügen ??? auf UITableView ??? – iPatel

+0

Ja, ich habe einen UISearchDisplayController gezogen und die Suchleiste zum TableView hinzugefügt – tausun

+0

Vielen Dank, es hat funktioniert. – tausun

Antwort

2

Zuerst ich weiß, dass Sie searchDisplayController auf UITableView hinzufügen .

Bitte entfernen und Ihre UISearchDisplayController auf Ihrem -View-Controller hinzufügen nicht auf UITableView, beacuse wenn Sie UITableView verstecken dann UISearchDisplayController auch ausblenden, weil Sie UISearchDisplayController auf UITableView hinzugefügt.

Thanks :)

0

allererst machen den Tisch Steckdose und verbinden Sie es mit Tabelle dann diese Codezeile Versuchen

tableView.hidden=TRUE; 

es funktioniert ....

+0

TableView ist bereits eine Steckdose und ist verbunden.und ich tat das gleiche, was Sie gepostet haben. – tausun

2

Sie können die Datenquelle Setup für die tableView in einer solchen Art und Weise, dass es 0 Abschnitte zurückgibt, wenn die Suchoberfläche sichtbar:

- (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView 
{ 
    if (self.searchDisplayController.active && 
     (tableView != self.searchDisplayController.searchResultsTableview)) 
     return 0; // return 0 for bottom table view if search interface is active 
    else 
     return <your usual number of sections> 
} 

Und dann statt versteckt Tabellenansicht, könnten Sie [tableView reloadData] tun, um den gesamten Inhalt auszublenden. Laden Sie nach Abschluss der Suche die Tabellenansicht erneut, um den Inhalt erneut anzuzeigen.

Wenn Sie die Tabellenansicht neu laden, werden zwar alle Tabellenansichtszellen und der Inhaltsoffset der Tabellenansicht zurückgesetzt, es kann jedoch in einigen Fällen nicht sinnvoll sein, dies zu tun.

Alternativ können Sie versuchen, durch alle der Tabellenansicht des sichtbaren Zellen zu durchlaufen und verstecken sie wie folgt aus:

for (UITableViewCell *cell in tableView.visibleCells) 
{ 
    cell.hidden = YES; 
} 
+0

Ich dachte früher an diese Prozesse, aber ich brauchte eine einfachere Lösung. Vielen Dank für Ihre Antwort. – tausun

Verwandte Themen