2010-02-12 3 views
58

Existe-t-il un moyen d'implémenter UISwitch avec des graphiques personnalisés pour les états de commutation? Ou à l'inverse, une fonctionnalité UIButton avec UISwitch?UIButton iPhone avec fonctionnalité UISwitch

+5

Celui qui a voté pour fermer cette question une copie exacte, vous devez au moins fournir un commentaire expliquant quel poste il est un double de. – Jasarien

Répondre

99

UIButton prend déjà en charge une fonctionnalité de «commutateur». Il suffit de définir une image différente dans Interface Builder pour la "Configuration d'état sélectionnée" et d'utiliser la propriété selected de UIButton pour basculer son état.

+0

Il revient à la normale après avoir tapé/sélectionné. C'est ce que j'ai fait sans IB. \t [favButton setImage: favOff pour l'état: UIControlStateNormal]; \t [favButton setImage: favOn forState: UIControlStateHighlighted]; \t [favButton setImage: favOn forState: UIControlStateSelected]; \t [favButton setBackgroundColor: [UIColor clearColor]]; \t \t [self.view addSubview: favButton]; – scud

+3

Ok "setSelected" était la propriété que je cherchais, merci – scud

+0

L'UISwitch anime bien son changement d'état. Je me demande comment animer un état changeant UIButton. Des idées? – radven

12

mis l'image à afficher sur l'état sélectionné:

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

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

button.selected = YES; 

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

otherButton.selected = NO; 
7

Pour construire sur ce que PGB et nurne ont dit ci-dessus, après avoir défini vos états et attacher un sele ctor (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. 
    */ 
} 
3

Pour programme incliné:

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