J'ai ajouté un UISegmentedControl
dans mon application. Aucun des boutons n'est sélectionné dans l'état normal. Je veux implémenter un événement de clic de bouton lorsque le premier segment est sélectionné, et un autre événement lorsqu'un autre bouton est cliqué.
Réponses
Trop de publicités?Si je comprends bien votre question, il suffit d'implémenter une méthode de type "target-action" (prise en charge par UIControl
qui est UISegmentedControl
) pour la constante UIControlEventValueChanged
exactement comme dans l'exemple donné dans le fichier de configuration de UISegmentControl documents de référence .
c'est-à-dire
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
utilisé pour un message avec la signature suivante :
- (void)action:(id)sender
ou
[segmentedControl addTarget:self
action:@selector(action:forEvent:)
forControlEvents:UIControlEventValueChanged];
pour
- (void)action:(id)sender forEvent:(UIEvent *)event
ou
[segmentedControl addTarget:self
action:@selector(action)
forControlEvents:UIControlEventValueChanged];
pour la méthode la plus simple :
- (void)action
qui sont des types standard de sélecteurs cible-action utilisés dans UIKit.
Essaie celle-là,
UISegmentedControl * travelModeSegment = [[UISegmentedControl alloc] initWithItems:
[NSArray arrayWithObjects:NSLocalizedString(@"Driving", nil), NSLocalizedString(@"Walking", nil), nil]];
[travelModeSegment setFrame:CGRectMake(9.0f, 0.0f, 302.0f, 45.0f)];
[cell addSubview:travelModeSegment];
[travelModeSegment release];
puis écrivez une action,
if (travelModeSegment.selectedSegmentIndex == 0) {
//write here your action when first item selected
} else {
//write here your action when second item selected
}
J'espère que cela vous aidera
Il convient de noter que le sélecteur doit correspondre exactement à une méthode, mais sans les paramètres réels.
@selector(action)
=> -(void) action { ..code.. }
@selector(action:)
=> -(void) action:(id)sender { ..code.. }
@selector(action:forEvent:)
=> -(void) action:(id)sender forEvent:(UIEvent *)event { ..code.. }
Cela m'a longtemps dérouté, et ce n'est pas très clair dans les réponses précédentes.