Как структурировать оператор if-else в методе IBAction - PullRequest
0 голосов
/ 14 июля 2009

Я не знаю, как сделать заявление if-else в IBAction! Я могу сделать их только по нажатию кнопки ... что я хочу сделать, это проверить, для какого вопроса находится int, и внести соответствующие изменения. пожалуйста, помогите!

MainView.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface MainView : UIView{
    IBOutlet UIImageView *background;
    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2;
    IBOutlet UIButton *button3;
    IBOutlet UIButton *button4;
    IBOutlet UILabel *questionLabel;
}

@property (nonatomic, retain) UIButton *button1;
@property (nonatomic, retain) UIButton *button2;
@property (nonatomic, retain) UIButton *button3;
@property (nonatomic, retain) UIButton *button4;
@property (nonatomic, retain) UILabel *questionLabel;
@property (nonatomic, retain) UIImageView *background;

- (IBAction)Button1clicked;
- (IBAction)Button2clicked;
- (IBAction)Button3clicked;
- (IBAction)Button4clicked;
@end

MainView.m

    #import "MainView.h"

    @implementation MainView

    @synthesize button1, button2, button3, button4, questionLabel, background;

    int question = 1;

    BOOL oneRight = FALSE;
    BOOL twoRight = FALSE;
    BOOL threeRight = FALSE;
    BOOL fourRight = FALSE;


    - (IBAction)Button1clicked {
        if (oneRight == TRUE) {
            questionLabel.text = @"CORRECT!";
            question++;
        } else {
            questionLabel.text = @"FAIL";   
        }
    }

    - (IBAction)Button2clicked {
        if (twoRight == TRUE) {
            questionLabel.text = @"CORRECT!";
            question++;
        } else {
            questionLabel.text = @"FAIL";   
        }
    }

    - (IBAction)Button3clicked {
        if (threeRight == TRUE) {
            questionLabel.text = @"CORRECT!";
            question++;
        } else {
            questionLabel.text = @"FAIL";   
        }
    }

    - (IBAction)Button4clicked {
        if (fourRight == TRUE) {
            questionLabel.text = @"CORRECT!";
            question++;
        } else {
            questionLabel.text = @"FAIL";   
        }
    }

    int foo(int question) {
        if (question == 1) {
        oneRight = TRUE;
        twoRight = FALSE;
        threeRight = FALSE;
        fourRight = FALSE;
        }
    }

    @end

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

Я бы предложил использовать параметр отправителя IBAction-вызова. Каждый раз, когда вызывается метод IBAction, объект, отправляющий вызов, отправляется вместе с ним, что позволяет легко определить, какая кнопка была нажата.

- ( IBAction ) buttonClicked:( id ) sender {

   if( [ sender tag ] == answer ) {
      questionLabel.text = @"CORRECT";
      ...
   } 
   else {

      questionLabel.text = @"FAIL";
      ...
   }
}
1 голос
/ 22 декабря 2009

Согласно Начиная разработку iPhone , вы также можете просто сравнить отправителя с указателем кнопки

-(IBAction)buttonPressed:(id) sender {
     if (sender == firstPointer ) {    
          ...
     }
     else if (sender == secondPointer ) {    
          ...
     }
     ...
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...