我怎样才能这样做,如果2在行动中,则只使用1“if-statement”

时间:2013-01-28 14:13:08

标签: objective-c uitextfield alertview

在游戏中...... 当按下“完成”按钮时,有2个“if-statements”:一个将你带到下一个级别,另一个返回你的家。我怎样才能做到这一点只有一次发生?它现在的工作方式是,无论用户是对还是错,都会弹出输赢的“警报视图”。这是它的外观:

-(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];
    }
}

3 个答案:

答案 0 :(得分:3)

您的第二个if出现了问题。

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

这个if总是如此,因为为什么entry.text不能与自己相等?

此外,如果您有两个if语句且只有一个是真的,那么您总是使用else if作为第二个:

if (<condition>) {

} else if (<other condition>) {

}

如果condition为真,则即使if也为真,也不会执行其他other condition。但是,在您的情况下,您的第二个if对我来说似乎是胡说八道。始终为真的if是无用的,完全被排除在外。代码等同于

if (<condition>) {

} else {

}

答案 1 :(得分:0)

如果条件允许,你可以使用else。

像这样:

-(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;”

像这样:

答案 2 :(得分:-1)

我得到了答案......

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

condition

}

谢谢!