62 votes

iPhone UIButton avec la fonctionnalité UISwitch

Existe-t-il un moyen d'implémenter UISwitch avec des graphiques personnalisés pour les états de commutation? Ou comme alternative, un UIButton avec la fonctionnalité UISwitch?

102voto

pgb Points 17316

UIButton supporte déjà une fonctionnalité "switch".

Il suffit de définir une autre image dans Interface Builder pour la "configuration sélectionnée Etat", et utiliser le selected propriété de UIButton pour passer son état.

13voto

nurne Points 978

paramétrez l'image pour qu'elle apparaisse dans l'état sélectionné:

 [button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
 

puis sur le sélecteur à l'intérieur du sélecteur, définissez:

 button.selected = YES;
 

si vous souhaitez que cela annule la sélection d'un autre bouton, définissez:

 otherButton.selected = NO;
 

9voto

Shaolo Points 381

Pour poursuivre sur ce que PGB et nurne ont dit plus haut, 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.
     */
}
 

3voto

Thunder Rabbit Points 2285

Pour incliné par programme:

 -(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];
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X