-2

在游戏中……当按下“完成”按钮时,有两个“if 语句”:一个带您进入下一个级别,另一个带您回家。我怎样才能让它一次只发生一次?它现在的工作方式是无论用户是对还是错,都会弹出获胜和失败的“警报视图”。这是它的外观:

-(IBAction)done {

    if ([entry.text isEqualToString:sentance.text]) {

        UIAlertView *alert = [[UIAlertView alloc] 
                             initWithTitle:@"Cleared!" 
                             message:@""
                             delegate:nil 
                             cancelButtonTitle:@"Ok" 
                             otherButtonTitles: nil];
        [alert show];
        [alert release];

        seconds.text = @"5 Seconds";
    }

    if ([entry.text isEqualToString:entry.text]) {

        NSString *nssScore= [NSString stringWithFormat:@"Final Score: \n %i Points", Score];

        UIAlertView *alert = [[UIAlertView alloc]
                             initWithTitle:@"Nope! Wrong"
                             message:nssScore
                             delegate:nil
                             cancelButtonTitle:@"Ok"
                             otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}
4

3 回答 3

3

你的第二个有问题if

if ([entry.text isEqualToString:entry.text]) {

这 if 总是正确的,因为为什么entry.text不应该等于它自己?

此外,如果您有两个if陈述并且只有一个是正确的,那么您总是使用 aelse if来表示第二个:

if (<condition>) {

} else if (<other condition>) {

}

如果condition为真,if则不执行其他,即使other condition也为真。但是,在您的情况下,您的第二个if对我来说似乎是无稽之谈。一个if永远正确的东西是无用的,被完全排除在外。代码相当于

if (<condition>) {

} else {

}
于 2013-01-28T14:19:01.800 回答
0

您可以使用 else if 条件。

像这样 :

-(IBAction)done {

    if ([entry.text isEqualToString:sentance.text]) {

        UIAlertView *alert = [[UIAlertView alloc] 
                              initWithTitle:@"Cleared!" 
                              message:@""
                              delegate:nil 
                              cancelButtonTitle:@"Ok" 
                              otherButtonTitles: nil];
        [alert show];
        [alert release];

        seconds.text = @"5 Seconds";
    }
    else if ([entry.text isEqualToString:entry.text]) {

        NSString *nssScore= [NSString stringWithFormat:@"Final Score: \n %i Points", Score];

        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"Nope! Wrong"
                              message:nssScore
                              delegate:nil
                              cancelButtonTitle:@"Ok"
                              otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}

或者您可以在每个块中添加一行代码“return;”

像这样:

于 2013-01-28T14:20:37.460 回答
-1

我得到了答案,伙计们...

    if ([a.text isEqualToString:b.text] == FALSE) {

condition

}

谢谢!

于 2013-01-28T22:46:24.213 回答