1

prepareForSegueメソッドを使用して別の VC に整数を設定しようとしています。4 つのボタンがあり、各ボタンには、押されたときに変更される独自のブール値があります。

- (IBAction)answerChoiceFourPressed:(id)sender {
    self.ButtonFourPressed = YES;
}

ここにこのメソッドがあります:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    ((SecondQuestionViewController *)segue.destinationViewController).delegate=self;

    if ([segue.identifier isEqualToString:@"toQuestion2"]) {
        SecondQuestionViewController *mdvc = segue.destinationViewController;

        NSInteger newInt;

        if (ButtonTwoPressed == YES) {
            newInt = 1;
            [mdvc setSecondScore:newInt];}

        if (ButtonThreePressed == YES) {
            newInt = 2;
            [mdvc setSecondScore:newInt];}

        if (ButtonFourPressed == YES) {
            newInt = 3;
            [mdvc setSecondScore:newInt];} 

        else {
            [mdvc setSecondScore:0];}
    }
}

SecondQuestionViewController では、すべてを網羅しています。

#import "FirstQuestionViewController.h"

また、secondScore int は @property として宣言されています。

@property (nonatomic, assign) NSInteger secondScore;

私はNSLogを使用しています(@"Score NUMBER 2 is %d", secondScore);

そして、4番目のボタンが押されない限り、常に0が返されます.3が返されます(prepareForSegueメソッドの最後のボタン) 考えられる問題は何ですか? 前もって感謝します!

4

3 に答える 3

2

あなたの if ステートメントは壊れています。最後の条件は、値を 0 に設定することでした。また、newInt 変数を宣言する必要もありません。これを行うだけです:

if (ButtonTwoPressed == YES) {
    [mdvc setSecondScore:1];
}
else if (ButtonThreePressed == YES) {
    [mdvc setSecondScore:2];
}
else if (ButtonFourPressed == YES) {
     [mdvc setSecondScore:3];
} 
else {
    [mdvc setSecondScore:0];
}
于 2012-09-06T22:10:37.467 に答える
1

これを試して:

if (ButtonTwoPressed == YES) {
    newInt = 1;
    [mdvc setSecondScore:newInt];}

else if (ButtonThreePressed == YES) {
    newInt = 2;
    [mdvc setSecondScore:newInt];}

else if (ButtonFourPressed == YES) {
    newInt = 3;
    [mdvc setSecondScore:newInt];} 

else {
    [mdvc setSecondScore:0];}

問題は、if ステートメントが分離されているため、最後のステートメントに到達してボタンが押されていない場合、「else」命令が呼び出され、値が 0 に設定されることです。

于 2012-09-06T22:10:09.283 に答える
1

これを使って:

if (ButtonTwoPressed == YES) {
    newInt = 1;
    [mdvc setSecondScore:newInt];
}
else if (ButtonThreePressed == YES) {
    newInt = 2;
    [mdvc setSecondScore:newInt];
}
else if (ButtonFourPressed == YES) {
    newInt = 3;
    [mdvc setSecondScore:newInt];
} 
else {
    [mdvc setSecondScore:0];
}
于 2012-09-06T22:03:10.890 に答える