Existe-t-il un moyen d'implémenter UISwitch avec des graphiques personnalisés pour les états de commutation? Ou comme alternative dans l'autre sens, un UIButton avec la fonctionnalité UISwitch?
UIButton
supporte déjà une fonctionnalité "switch".
Définissez simplement une image différente dans Interface Builder pour la "Configuration de l'état sélectionné" et utilisez la propriété selected
de UIButton
pour basculer son état.
définir l'image pour qu'elle s'affiche sur l'état sélectionné:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
puis sur retouche à l'intérieur du sélecteur, réglez:
button.selected = YES;
si vous voulez que cela annule la sélection d'un autre bouton, définissez:
otherButton.selected = NO;
Pour s'appuyer sur ce que PGB et nurne ont dit ci-dessus, après avoir défini vos états et attaché un sélecteur (méthode d'événement), vous voudriez mettre ce code dans ce sélecteur.
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
Pour les programmés:
-(void) addToggleButton {
CGRect aframe = CGRectMake(0,0,100,100);
UIImage *selectedImage = [UIImage imageNamed:@"selected"];
UIImage *unselectedImage = [UIImage imageNamed:@"unselected"];
self.toggleUIButton = [[UIButton alloc] initWithFrame:aframe];
[self.toggleUIButton setImage:unselectedImage forState:UIControlStateNormal];
[self.toggleUIButton setImage:selectedImage forState:UIControlStateSelected];
[self.toggleUIButton addTarget:self
action:@selector(clickToggle:)
forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.toggleUIButton];
}
-(void) clickToggle:(id) sender {
BOOL isSelected = [(UIButton *)sender isSelected];
[(UIButton *) sender setSelected:!isSelected];
}