web-dev-qa-db-fra.com

iPhone UIButton avec fonctionnalité UISwitch

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?

60
scud

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.

101
pgb

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;
13
nurxyz

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.
     */
}
9
Shaolo

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];
}
3
Thunder Rabbit