2010-08-15 5 views
1

J'ai 2 boutons sur ma vue et je veux désactiver le premier bouton quand je clique sur un autre bouton et désactiver le second quand je clique de nouveau sur le bouton.Comment puis-je désactiver plusieurs boutons?

J'ai essayé avec ce code

if (button1.enable = NO) { 
    button2.enable = NO; 
} 

J'ai donc dans un NavigationBar un bouton « + » et 5 boutons désactiver à mon avis. Lorsque j'appuie sur le bouton « + » Je souhaite activer le premier bouton et quand je pousse à nouveau qu'ACTIVER le second ...
Merci

+0

Comment ce code désactive-t-il les boutons? –

+0

Pouvez-vous fournir plus d'informations? Il est difficile de comprendre ce que vous essayez de demander ici ... – Jasarien

Répondre

0

vous dites

if (button1.enabled = NO) { 

quand vous voulez dire probablement

if (button1.enabled == NO) { 

= est l'opérateur d'affectation et == est l'opérateur d'égalité booléenne. Ce que vous faites en ce moment, c'est d'affecter YES à button1.enable, ce qui active évidemment button1. Puis, parce que button.enable est vrai, le contrôle entre la clause if et active le bouton2.

EDIT: Pour répondre à votre nouvelle question ("Quand j'appuie sur le bouton" + "je veux activer le premier bouton et quand je repasse à nouveau pour activer le second ..."), disons que vous initialisez le bouton États quelque part. Dans votre @interface ajouter une variable d'instance

NSArray *buttons; 

de sorte que votre déclaration d'interface ressemble à quelque chose comme

@interface YourViewController: UIViewController { 
    IBOutlet UIButton *button1; 
    IBOutlet UIButton *button2; 
    IBOutlet UIButton *button3; 
    IBOutlet UIButton *button4; 
    IBOutlet UIButton *button5; 
    NSArray *buttons; 
} 

puis initialisez buttons comme ceci:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    buttons = [NSArray arrayWithObjects: button1, button2, button3, button4, button5, nil]; 
    [buttons retain]; 
    for (UIButton *each in buttons) { 
    each.enabled = NO; 
    } 

-(void)viewDidUnload { 
    [buttons release]; 
    [super viewDidUnload]; 
} 

Supposons que vous accrochez le + Touchez le gestionnaire d'événement Touch Up Inside à plusPressed:. Ensuite, vous auriez

-(IBAction)plusPressed: (id) button { 
    for (UIButton *each in buttons) { 
    if (!each.enabled) { 
     each.enabled = YES; 
     break; 
    } 
    } 
} 

Chaque fois plusPressed: est appelé, le bouton suivant du tableau sera activé. (J'écris ci-dessus loin d'un compilateur, il peut y avoir des erreurs de syntaxe.)

Vous pouvez également faire une propriété buttons. Je n'ai pas, parce que les autres classes n'ont pas d'accès à l'buttons.

+0

okok merci j'essaye – Alex

+0

merci pour votre aide! mais je ne comprends pas où je dois mettre ce code ... – Alex

+0

merci mais quand j'ajouter le code i une erreur « expression attendue avant « UIButton » pour la ligne » foreach (* UIButton chacun dans les boutons) merci encore – Alex

0

button1.enable = YES devrait être button1.enable == YES

une forme plus lisible: [button1 isEnabled]

3
if (button1.enabled == YES) 
{ 
    button1.enabled = NO; 
    button2.enabled = YES; 
} 
else (button2.enabled == YES) 
{ 
    button2.enabled = NO; 
    button1.enabled = YES; 
} 

Est-ce ce que vous cherchez? Ce serait un IBAction pour l'autre bouton.

Questions connexes