2010-07-08 3 views
7

Cette question est probablement très simple, mais je n'arrive pas à trouver quoi que ce soit dans les API ou dans n'importe quel moteur de recherche.UISegmented Contol configuré pour gestionnaire momentané

J'ai un contrôle Segmenté que j'ai défini à un moment où un utilisateur va sélectionner quelques marques d'une voiture qu'ils veulent rechercher. Le problème que je rencontre est que je n'arrive pas à comprendre comment reconnaître quel segment a été sélectionné. En mode normal c'est un simple SelectedSegment = index mais avec un moment, je comprends que le segment sélectionné est toujours -1 car aucun n'est jamais "sélectionné"

J'ai un gestionnaire pour ValueChanged mais je n'arrive pas à comprendre ce que je '' m vérifier ou ce que je devrais envoyer pour déterminer quel segment a été sélectionné. Toute aide serait grandement appréciée. J'utilise monotouch mais Obj-C irait bien aussi.

Merci!

Répondre

10

Dans votre gestionnaire, vous devriez vérifier le selectedSegmentIndex pour déterminer quel segment a été sélectionné:

- (void)valueChanged:(UISegmentedControl *) control { 
    switch([control selectedSegmentIndex]) { 
     case 0: 
     //... 
     break; 
     case 1: 
     //... 
     break; 
    } 
} 
+2

Cela est correct. Le UISegmentedControl suit uniquement le * dernier * élément sélectionné, et non * tous * les éléments actuellement sélectionnés. Vous devrez maintenir la liste actuellement sélectionnée dans votre propre objet. –

+0

Génial, Merci pour l'aide! – Adam

+3

Wow, ça marche. La [documentation Apple] (http://developer.apple.com/library/ios/documentation/uikit/reference/UISegmentedControl_Class/Reference/UISegmentedControl.html#//apple_ref/occ/instp/UISegmentedControl/selectedSegmentIndex) semble l'indiquer ne le ferait pas. "UISegmentedControl ignore cette propriété lorsque le contrôle est en mode momentané." Mais selectedSegmentIndex produit une bonne valeur, donc ça marche pour moi. –

Questions connexes