2009-07-22 7 views

Répondre

11

Ce n'est pas directement accessible, de sorte que vous devrez le faire à l'ancienne et passer au crible à la main à travers les sous-vues de votre searchDisplayController.searchResultsTableView. Voici un exemple:

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

Je ne recommanderais pas cela car vous comptez sur le comportement interne du searchResultsTableView qui est plus que probable de changer à un moment donné, casser votre application. Ouvrir une demande de bug/fonctionnalité avec Apple serait un bon moyen d'y aller.

+0

Cool, merci beaucoup ... – Stefan

+0

Mais quand faites-vous le peaufinage? Ce 'UILabel' apparaît dans les 'sous-vues' seulement après qu'il a été réellement affiché ... –

+0

Oui, où mettons-nous ce code ??? – Napolux

14

J'ai réussi à supprimer l'étiquette en n'ayant jamais un jeu de résultats vide.

S'il n'y a aucun résultat, car ils sont récupérés sur le serveur, réinitialisez votre source de données sur une seule ligne et affichez une cellule vide.

De plus, la logique d'utilisation à refeuse pour sélectionner la cellule « factice »:

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

J'ai aussi trouvé nécessaire d'ajouter une logique de cellule « factice » dans la méthode déléguée willSelect:

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