2009-07-22 10 views

risposta

11

Non è direttamente accessibile, quindi dovrete farlo alla vecchia maniera e vagliare manualmente attraverso i subviews del vostro searchDisplayController.searchResultsTableView. Ecco un esempio:

UITableView *tableView = self.searchDisplayController.searchResultsTableView; 
for(UIView *subview in tableView.subviews) { 
    if([subview class] == [UILabel class]) { 
     UILabel *lbl = (UILabel*)subview; // sv changed to subview. 
     lbl.text = @"My custom string"; 
    } 
} 

io non consiglierei questo dato vi affidate ai comportamenti interna del searchResultsTableView che è più che probabile che a cambiare ad un certo punto, rompendo la vostra applicazione. Aprire una richiesta di bug/funzionalità con Apple sarebbe un buon modo per andare qui.

+0

Cool, grazie mille ... – Stefan

+0

Ma quando si fa il tweaking? Questo 'UILabel' si apre nelle' sottoview' solo dopo che è stato effettivamente visualizzato ... –

+0

Sì, dove inseriamo questo codice ??? – Napolux

14

Ho rimosso con successo l'etichetta non avendo mai un set di risultati vuoto.

Se non ci sono risultati perché vengono recuperati dal server, reimpostare l'origine dati su una singola riga e visualizzarne una cella vuota.

Inoltre, usa la logica per refeuse per selezionare la cella "fittizio":

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row]; 
    if ([listItem isEqualToString:@""]) { 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
} 

ho anche trovato necessario aggiungere la logica delle cellule "fittizio" nel metodo willSelect delegato:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row]; 
    if ([listItem isEqualToString:@""]) { 
     return nil; 
    } 
    return indexPath; 
} 
Problemi correlati