UISegmentedControl appels de méthode d'action sur le changement de selectedSegmentIndex par programmation
J'ai un UISegmentedControl dans mon fichier xib. Il est lié à une méthode d'action sur la valeur événement a changé dans le fichier xib.
Quand I du programme, définissez la valeur de selectedSegmentIndex de la méthode d'action est appelée
mysegmentedcontrol.selectedSegmentIndex = index
Je m'attendais à ce que la méthode d'action, ne serait appelée lorsque l'utilisateur modifie le contrôle par le toucher?
Cela se produit uniquement pour UISegmentedControl.
il sert à produire pour iOS 4.3.3 sur iPad, n'est plus un problème dans iOS 5
OriginalL'auteur AmaltasCoder | 2011-09-21
Vous devez vous connecter pour publier un commentaire.
.h fichier
.m fichier
.m fichier
où vous mettez ce code à modifier par programmation à faire avant que de cette
voir mon ci-dessus mis à jour le code
J'ai utilisé ci-dessus pour le faire fonctionner ... encore que je préfère, moins enclins à faire des erreurs solution.
OriginalL'auteur Vijay-Apple-Dev.blogspot.com
La solution est sans doute à lier un
IBAction
méthode à untouchUpInside
de l'événement et de propager le changement de valeur si vous envisagez de changer également l'index sélectionné par programme.De ce qu'on peut lire, même dans Cacao Fondamentaux Guide, les événements à venir à partir des commandes de l'INTERFACE doivent être envoyés uniquement lorsque l'événement est déclenché en réponse à l'utilisateur d'agir sur le contrôle, pas d'un changement programmatique. C'est mon incompréhension, ou c'est une sorte de
UISegmentedControl
bug.Ma solution plus en détail
Connecter un
IBAction
méthode pourUISegmentedControl
'sTouch Up Inside
événement et en avant lasender
paramètre à la méthode d'action de la manipulationValue Changed
. De cette façon, si il y a un changement programmatique de la valeur, le contrôle n'est pas le changement de valeur de gestionnaire. Seulement quand c'est par une action de l'utilisateur sur le contrôle.La seule chose à résoudre ici est de détecter si l'index sélectionné réellement changé.
Je me souviens que j'ai eu ce problème il y a quelques mois. La solution de contournement que j'ai écrit sur ci-dessus est celui que j'ai utilisé, en fait. Je vais essayer aujourd'hui, dans le temps libre.
OriginalL'auteur macbirdie
Je vais ajouter quelque chose de plus pour les réponses qui peuvent se sentir un peu plus contrôlable.
Appelez simplement removeTarget, faire votre mise à jour programmatique pour le segment sélectionné, ajouter de nouveau la cible (pour UIControlEventValueChanged)
Je suis venu ici à la recherche d'une réponse, la seule condition semblait fonctionner, mais alors il est venu à moi qui fait de la suppression/ajout de la cible paraît plus appropriée et de travaux.
OriginalL'auteur RunningPink