Risultato della ricerca di UISearchDisplayController ha altri layout di cella e il comportamento di tabella cercato

StackOverflow https://stackoverflow.com/questions/8333532

Domanda

Sto usando storyboarding. Ho un UITableView con un prototipo di cella. Questa cella è di stile "sottotitolo". Ho aggiunto un segue dalla cella alla visualizzazione dettagliata. Così, quando l'utente tocca una cella si aprirà l'editor corrispondente ... Che tutto funziona alla grande.

Ora ho aggiunto un UISearchDisplayController un un UISearchBar, implementato i delegati. Che funziona molto bene.

Ma nella tabella dei risultati di ricerca le cellule sono di stile "default" e non sono tapable. Cosa devo fare per ottenere una tabella dei risultati alla ricerca e di comportarsi come il tavolo "unsearched"?

È stato utile?

Soluzione 2

Trovato il problema ...

Il metodo

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

tirato cella dal tableView, che è nel caso risultato non tableView dallo storyboard ma la resultTableView dal SearchDisplayController.

I ora ottenere la cella per visualizzare in entrambi i casi dal punto di vista tabella nella storyboard e ora funziona.

Altri suggerimenti

mi piacerebbe contribuire a risposta # 1 questo è quello che ho fatto e ha funzionato per me

nel metodo

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

invece di assegnare alla cella dal parametro tableView

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

assegnarlo direttamente dal TableView sulla vista quindi bisogna sostituire questo

// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

con questo

 UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

Ho usato ios 7.0 e Xcode 5.0. Ho trovato che il regolatore di esposizione di ricerca utilizza lo stesso layout di Tableview come il controller della vista delegato. Tutto quello che dovete fare è giudicare se la corrente è Tableview Tableview la vista del controllore delegato, o Tableview del controller display di ricerca. Ma ricordarsi di aggiungere la frase

tableView.rowHeight = self.tableView.rowHeight;

nel seguente frammento di codice:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == self.searchDisplayController.searchResultsTableView)
{
    tableView.rowHeight = self.tableView.rowHeight;//very important!
    return [self.searchResults count];
}
else
{
    ...
    return ...;
}
}

se si dimentica di attuare tale frase, poi la riga della visualizzazione della tabella di visualizzazione di ricerca è solo alto come una fila di default, che ti fa pensare che non sembra la tabella "unsearched".

C'è una possibile risposta a questo qui . Potrebbe non funzionare del tutto per voi, ma come ho spiegato, l'UISearchDisplayController crea la vista tabella.

Controllare la documentazione e si può ottenere una migliore comprensione di esso, ma afferma:

si inizializza un controller con una barra di ricerca e di un display di ricerca guarda controllore responsabile della gestione del contenuto originale essere cercato. Quando l'utente avvia una ricerca, il controller display di ricerca è responsabile per sovrapporre l'interfaccia di ricerca sul vista originale del controller della vista e mostrando i risultati di ricerca. Il i risultati vengono visualizzati in una vista tabella che si crea dalla ricerca scheda video. Oltre al controller vista originale, ci sono logicamente altri quattro ruoli. Questi sono in genere tutte giocate dal stesso oggetto, spesso la vista controller originale stessa.

Nel mio caso UISearchDisplayController stava usando a destra tipo di cellula (personalizzato), ma l'altezza della cella era sbagliato, così ho dovuto usare

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

metodo per risolvere il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top