3

J'essaie d'imiter le comportement d'une vue de table similaire à l'application iPod pour les artistes - c'est une vue de table en coupe avec un index de section sur la droite, avec une barre de recherche en haut, mais caché lorsque la vue est affichée. J'utilise sdk 3.1.2 et IB, alors j'ai simplement traîné un UISearchDisplayController dans ma NIB - il branche tout pour la recherche. Le problème commence parce que j'ajoute le UISearchBar à la première section du UITableView, parce que si je comprends bien je dois le faire ainsi je peux sauter à la barre de recherche en touchant directement l'icône de recherche dans l'index de section? Lorsque la vue de la table apparaît, je vois la barre de recherche mais elle a été redimensionnée et j'ai maintenant un bloc blanc derrière l'index de section en haut. Il ne prend pas la couleur de l'entourage de UISearchBar, ce qui est intéressant est différent de celui montré dans Interface Builder.UISearchBar dans un UITableView

J'ai trouvé une astuce pour ajouter une petite barre de navigation et un UISearchBar dans un UIView, puis l'ajouter à la cellule de vue de table. Cela fonctionne, mais la couleur de l'arrière-plan de la barre de navigation est ce que vous attendez normalement (gris), pas la couleur différente comme indiqué ci-dessus. Plus intéressant, si j'appuie sur la barre de recherche pour lancer une recherche, puis sur Annuler, tout est corrigé. L'arrière-plan le long de la cellule tableview entière lorsque la barre de recherche est, est le même?

Répondre

12

a répondu à ma propre question, mais peut-être utile à d'autres débutants:

  • Mettez la barre de recherche dans l'en-tête de vue de la table lorsque la vue des charges, faites défiler contentOffset jusqu'à la hauteur de cette barre de recherche (généralement 44 pixels) , mais facile à vérifier dynamiquement
  • Ajouter une icône de recherche dans l'index de section avec « {recherche} »
  • Faire la sectionIndexSection pour la recherche -1
  • Lors de la manipulation index de la section des touches utilisent la valeur de l'indice « spécial » pour recherche "-1" (pour faire défiler le conte ntOffset retour à (0, 0)

Mise à jour: utilisez la chaîne constante de chaîne UITableViewIndexSearch en place de la chaîne sans papier « {recherche} » - à savoir le retourner comme l'un des éléments du tableau lors de la mise en œuvre:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 

dans UITableViewDataSource.

+1

Il est préférable d'utiliser '' UITableViewIndexSearch' au lieu de @ "{recherche}" ' –

+0

droit! N'a pas besoin de cela depuis le début du codage 3.0 - voir ici aussi: http://stackoverflow.com/questions/235120/whats-the-uitableview-index-magnifying-glass-character – petert

+1

J'ai également ajouté ceci pour éviter que '{search } 'chaîne d'apparaître comme titre pour cette section:' if (section == 0) {return nil;} ' – Maurizio

1

Mettre le contrôleur de recherche au début de la tableView et essayez ceci:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { 
    if (index==0){ 
     [tableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO]; 
     return -1; 
    } 
... 
} 


- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 
     NSMutableArray * retValue =[NSMutableArray arrayWithArray:[YOUR ARRAY]]; 
     [retValue insertObject:UITableViewIndexSearch atIndex:0]; 
     return retValue; 
}