Как сделать так, чтобы в действии использовалось только 1 "if-Statement"?

В игре... Когда нажата кнопка "готово", появляется 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];
    }
}

3 ответа

Решение

Вы можете использовать еще, если условие.

Как это:

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

как это:

Что-то не так с вашим вторым if,

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

Это если всегда верно, так почему entry.text не быть равным самому себе?

Также, если у вас есть два if заявления и только одно должно быть правдой, вы всегда используете else if для второго:

if (<condition>) {

} else if (<other condition>) {

}

Если condition верно, другой if не выполняется, даже если other condition тоже верно. Тем не менее, в вашем случае ваш второй if кажется ерундой для меня. if это всегда верно, бесполезно и не учитывается полностью. Код эквивалентен

if (<condition>) {

} else {

}

Я получил ответ, ребята...

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

condition

}

Спасибо!

Другие вопросы по тегам