在游戏中...... 当按下“完成”按钮时,有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];
}
}
答案 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
}
谢谢!