2010-07-02 5 views
1

J'essaye d'implémenter un UISearchBar dans un UITableView, qui se comporte comme celui de l'onglet "Artistes" de l'application iPod. Je l'ai caché la barre de navigation, et redimensionnant la boîte de recherche pour montrer le bouton "Annuler", etc. mais je ne peux pas l'obtenir pour cacher les titres d'index de section.UITableView -reloadSectionIndexTitles ne pas appeler la source de données

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{ 
    inSearchMode_ = YES; // tell sectionIndexTitlesForTableView: to return nil 
    tableView_.scrollEnabled = NO; // works correctly, var is definitely wired 
    [tableView_ reloadSectionIndexTitles]; // doesn't call sectionIndexTitlesForTableView: 
    ... 

Ai-je raté quelque chose? Est-ce que UITableView -reloadSectionIndexTitles est cassé?

Typiquement, ma réponse à ce genre de chose serait d'appeler reloadData, mais cela a pour effet secondaire de provoquer la perte de focus du UISearchBar.

Répondre

0

Il semble que je dois faire est d'utiliser un UISearchDisplayController plutôt que la main rouler mon propre. J'ai été capable de modifier l'exemple "TableSearch" pour utiliser les sections et les en-têtes de section, et il se comporte comme je le veux.

1

Je pense que l'approche que vous voulez est le long de ces lignes (que vous avez un ArtistController que vous voulez faire des recherches):

  • Ajouter un sous-contrôleur au ArtistController appelé ArtistSearchController
  • Lorsque la boîte de recherche est cliqué, placez ArtistSearchController au premier plan comme modal (pour masquer les artistes) ou ajoutez de la transparence si vous souhaitez toujours afficher les artistes en arrière-plan.
  • Lorsqu'un critère de recherche est entré, créer un modèle pour ArtistSearchController qui est les données de ArtistController, filtré en utilisant le terme recherché, puis l'afficher dans une vue de liste
  • fermer la vue modale lorsque l'utilisateur clique sur annuler.

Cela vous évitera de manipuler la barre contrôleur/de navigation d'origine et de lui donner une meilleure ergonomie

+0

Cela ressemble beaucoup à la façon dont fonctionne UISearchDisplayController, maintenant j'ai joué avec l'échantillon. – chrisbtoo

Questions connexes