2010-07-16 42 views
2

J'ai créé l'affichage déroulant et définit les boutons dans la vue défilement. Les boutons défilent horizontalement et cela fonctionne bien. Si j'ai cliqué sur le bouton, j'ai défini l'image de fond en tant que "Etat sélectionné" dans le bouton. Mon problème est comment puis-je changé l'état sélectionné dans un bouton différent, lorsque vous cliquez dessus et comment puis-je désélectionné le "état sélectionné" bouton lorsque vous cliquez sur l'autre bouton.Comment puis-je maintenir l'état sélectionné dans le bouton dans l'iPhone

J'ai trois boutons dans la vue de défilement,

-(IBAction) Button1 : (id) sender 
{ 
    // btn1.selected = YES; 
      [btn1 setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateSelected]; 

} 

-(IBAction) Button2 : (id) sender 
{ 
    // btn2.selected = YES; 
     [btn2 setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected]; 

} 

-(IBAction) Button3 : (id) sender 
{ 
    // btn3.selected = YES; 
     [btn3 setImage:[UIImage imageNamed:@"three.png"] forState:UIControlStateSelected]; 

} 

voir l'image ci-dessous, (Santé, du divertissement et de l'argent montre sont les trois boutons)

Image http://www.freeimagehosting.net/uploads/6b3daab12f.png

et

Img http://www.freeimagehosting.net/uploads/b6e0f234dc.png

Remarque: (Comme, Tabbar et contrôle segmenté)

En cliquant sur le premier bouton et définir l'image d'arrière-plan dans l'état sélectionné et en cliquant sur le second bouton, les premiers boutons doivent être désélectionnés. Alors, comment puis-je maintenir l'état sélectionné, jusqu'à ce qu'un autre bouton soit cliqué.

Merci à l'avance.

Répondre

4

Je résolu cette tâche de la façon suivante:

méthode init:

  • Créer nombre de boutons avec des images définies pour l'état normal et sélectionné.
  • Attribuez une étiquette à chaque bouton (par exemple, pour la touche i'th est 1000 + i).
  • Attribuez IBAction pour chaque bouton.
méthode d'action

:

  • Supprimer la sélection de bouton précédemment sélectionné (recherche par tag avec son [vue viewWithTag:] méthode)
  • Sélectionnez l'expéditeur.
  • Enregistrer le tag de l'expéditeur.

Voici le code:

- (void)init { 

....INITIALIZE SCROLLVIEW HERE..... 

    for (int i = 0; i < 10; i++) { 
     UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 

     [btn setFrame:.....]; 
     [btn setImage:_IMAGE_ forState:UIControlStateNormal]; 
     [btn setImage:_IMAGE2_ forState:UIControlStateSelected]; 
     [btn setTag:i + 1000]; 

     [btn addTarget:self action:@selector(setSelectedButton:) forControlEvents:UIControlEventTouchUpInside]; 

     [self addSubview:btn]; 
    } 
} 

- (IBAction)setSelectedButton:(id)sender { 
    [self setSelectedButtonByIndex:((UIButton *)sender).tag - 1000]; 
} 

- (void)setSelectedButtonByIndex:(NSInteger)index { 
    if (selectedElemId >= 0) { 
     UIButton *btn = (UIButton *)[self viewWithTag:selectedElemId + 1000]; 
     [btn setSelected:NO]; 
    } 

    UIButton *btn = (UIButton *)[self viewWithTag:index + 1000]; 
    [btn setSelected:YES]; 

    selectedElemId = btn.tag - 1000; 
} 
+1

+1, kovpas, Merci pour votre réponse détaillée. Ça fonctionne bien. Merci beaucoup... – Pugal