2010-05-01 4 views
2

Je développe ma première application iPhone et je souhaite que l'utilisateur puisse sélectionner l'étendue de sa recherche de manière plus complexe que ne le permettent les 'boutons de portée'.Développement de l'iPhone: Meilleure méthode pour permettre à l'utilisateur de choisir la portée de la recherche

L'application est liée à des vins et je veux que l'utilisateur puisse sélectionner la «couleur» (rouge, blanc, fard à joues, etc.) d'abord, puis sélectionnez le type/cépage dans cette catégorie. En ce moment, j'utilise les boutons de portée de l'UISearchBar pour les couleurs et en appuyant sur le bouton ouvre une vue avec la sélection des couleurs. C'est correct sauf que lorsque le bouton 'Rouge' a été sélectionné, je ne peux pas le sélectionner une seconde fois pour changer mon choix de type (par exemple, passer de 'Merlot' à 'Syrrah', etc.) S'il y a une meilleure façon de le faire, je suis prêt à abandonner ma méthode et à partir de zéro.

Merci! Pourquoi ne pouvez-vous pas cliquer dessus une seconde fois?

+0

Marque, s'il vous plaît marquer "meilleures pratiques", pas "meilleur", "pratiques". –

Répondre

1

Il suffit d'utiliser la barre d'oscilloscope standard avec un bouton par choix (couleur, type, etc.). Lorsqu'un bouton est cliqué, affiche UIPickerView avec les valeurs possibles. Lorsqu'une valeur est choisie, affichez-la dans le bouton.

S'il n'y a que deux choix, vous pouvez également présenter un UIPickerView avec deux segments.

+0

Ce serait génial si je pouvais le cliquer une seconde fois mais cela ne déclenche pas un événement - que je connais. Existe-t-il autre chose que la méthode de délégué "shouldReloadTableForSearchScope" disponible lorsque vous cliquez sur les boutons d'étendue? BTW: J'utilise un UIPickerView pour choisir les types une fois que la couleur a été choisie. –

1

Il faut parfois poser la question pour que la réponse vienne à vous. Je mets la ligne suivante dans la méthode déléguée « viewDidDisappear »:

[self.searchDisplayController.searchBar setSelectedScopeButtonIndex: -1]; 

Ce que cela fait est de mettre le bouton portée actuellement actif à « rien » de sorte que lorsque vous revenez à la vue d'origine, aucun des boutons de portée sont sélectionnés. Ainsi, vous pouvez sélectionner l'un d'entre eux, y compris celui que vous avez sélectionné la dernière fois. C'est exactement ce que je voulais faire.

Je ne sais pas si c'est une «meilleure pratique», mais ça va servir.

+0

Ok, bon d'entendre que ça a été résolu! Peut-être pas la meilleure pratique pour utiliser une barre de portée comme cela en effet. J'espère qu'Apple approuve cette conception d'interface utilisateur. – Rengers

+0

Encore beaucoup à apprendre, pour être sûr. Même si cela fonctionne, je vais l'abandonner en faveur d'une table pour sélectionner ce qui a été 'objet'. Je ne veux pas que Papa Apple fronce les sourcils sur mon idée! –

Questions connexes