2013-02-11 14 views
6

Ho un UITableView con un searchDisplayController implementato. HoNascondi UITableView quando searchResultsTableView visualizzata

tableView.backgroundColor = [UIColor clearColor]; 

e

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

Quando entro il testo nel campo di ricerca, i risultati della ricerca vengono visualizzati bene, ma come lo sfondo della tabella risultante è trasparente, sto vedendo il mio tableview e su tableview viene visualizzata la tabella dei risultati della ricerca. Voglio nascondere la tableView quando il Campo di ricerca ha iniziato la modifica. Ho provato

-(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; 
} 

Ma nasconde il searchBar con il tableView. Come sistemarlo?

+0

Dove u aggiungere UISearchBar ??? su UITableView ??? – iPatel

+0

sì, ho trascinato un UISearchDisplayController e ha aggiunto di ricerca permette la tableView – tausun

+0

grazie mille, ha funzionato. – tausun

risposta

2

Prima so che si aggiunge searchDisplayController su UITableView .

elimina prega e aggiungi le UISearchDisplayController sul View Controller non su UITableView, Allucinante se si nasconde UITableView poi UISearchDisplayController nascondere anche perché si è aggiunto UISearchDisplayController su UITableView.

Grazie :)

0

prima di tutto fanno presa tavolo e collegarlo con la Tabella quindi provare questa riga di codice

tableView.hidden=TRUE; 

funzionerà ....

+0

tableView è già una presa di corrente ed è connected.and stavo facendo la stessa cosa che hai postato. – tausun

2

È possibile impostare l'origine dati per il tableView in modo tale che restituisce 0 sezioni quando l'interfaccia di ricerca è visibile:

- (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> 
} 

E allora invece di nascondere il proprio visualizzazione tabella, è possibile eseguire [tableView reloadData] per nascondere tutto il contenuto. Quindi, al termine della ricerca, ricaricare nuovamente la vista tabella per mostrare nuovamente il contenuto.

Ricaricare la vista della tabella riporta tutti i vista celle della tabella e il contenuto di offset della vista tabella però, quindi potrebbe non essere una buona idea per fare che in alcuni casi.

In alternativa, si potrebbe provare a scorrere tutte le celle visibili della vista tavolo e nasconderli così:

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

ho pensato a questo i processi precedenti, ma avevo bisogno di una soluzione più semplice. Grazie per la risposta. – tausun