我正在测试这段代码但是当我运行它时,它不会触发UIAlertView。当代码命中If (ongoingGame = YES)
和NSLog
时,它会直接跳转到'otherButtonTitles:nil'而不执行UIAlertView。
有人可以向我解释为什么它不会触发它吗?
-(IBAction)continueGame_button:(id)sender {
//=====CHECK IF THERE IS AN ON-GOING GAME, IF SO CONTINUE=====//
AccessCurrentGameData *isThereAnOngoingGameFunction = [AccessCurrentGameData new];
BOOL ongoingGame = [isThereAnOngoingGameFunction checkIfGameOngoing];
[isThereAnOngoingGameFunction release];
NSLog(@"+ + +continueGame_button+ + +");
NSLog(@"ongoingGame = %@\n", (ongoingGame ? @"YES" : @"NO"));
if (ongoingGame == YES) {
NSLog(@"++++++++++++++++++");
NSLog(@"++++++++++++++++++");
NSLog(@"++++++++++++++++++");
NSLog(@"++++++++++++++++++");
NSLog(@"++++++++++++++++++");
//
UIAlertView *continueGame = [[UIAlertView alloc] initWithTitle:@"Fortsätta spel"
message:@"Det finns ett aktivt spel, klicka Spela eller Tillbaka"
delegate:self
cancelButtonTitle:@"Tillbaka"
otherButtonTitles:nil];
[continueGame show];
[continueGame release];
}
exit(0);
}
答案 0 :(得分:2)
您将onGoingGame指定为YES,而不是将其与YES进行比较。使用==而不是=。
答案 1 :(得分:1)
您的提醒代码很好我一直使用该表单(三行 - 初始化,显示,发布)进行提醒。
我建议exit(0)
是问题的根源。如果要在用户关闭警报后退出,则应分配一个代理,当用户点击关闭按钮时,该代理将关闭应用程序。使用您的代码,但删除exit(0)
。然后按如下方式实现UIAlertViewDelegate:
-(IBAction)continueGame_button:(id)sender {
//=====CHECK IF THERE IS AN ON-GOING GAME, IF SO CONTINUE=====//
AccessCurrentGameData *isThereAnOngoingGameFunction = [AccessCurrentGameData new];
BOOL ongoingGame = [isThereAnOngoingGameFunction checkIfGameOngoing];
[isThereAnOngoingGameFunction release];
NSLog(@"+ + +continueGame_button+ + +");
NSLog(@"ongoingGame = %@\n", (ongoingGame ? @"YES" : @"NO"));
if (ongoingGame == YES) {
NSLog(@"+++++++++ ONGOING GAME +++++++++");
//
UIAlertView *continueGame = [[UIAlertView alloc] initWithTitle:@"Fortsätta spel"
message:@"Det finns ett aktivt spel, klicka Spela eller Tillbaka"
delegate:self
cancelButtonTitle:@"Tillbaka"
otherButtonTitles:nil];
[continueGame show];
[continueGame release];
}
}
- (void) alertViewCancel:(UIAlertView *)alertView{
//If you have other alerts, you may want to check the title of the alert to
//make sure that you only exit when THIS alert is dismissed
exit(0);
}
不要忘记将<UIAlertViewDelegate>
代码添加到标题(.h)文件中。
如果您需要多个按钮,也可以使用- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
,其中一个是特定的“退出”按钮。
请注意,Apple不鼓励在发布到App Store的应用中使用exit()
,并且使用该应用可能会导致您的应用被拒绝。
答案 2 :(得分:0)
你不应该立即释放它。即使在警报视图有机会显示之前,您也可以退出应用程序。 :)
即使警报视图可见,您的代码也会继续运行。
如果我没有在iPod touch上写这个答案,我会发布一些示例代码。你可以在谷歌找到很多这样的代码。
此外,如果您的应用不是仅限英语,则应始终使用Foundation提供的本地化。否则,您可以使用默认错误消息和其他UI元素获取英文文本。
答案 3 :(得分:0)
您可以尝试使用此行。
[[[[UIAlertView alloc] initWithTitle:@"this is my message" message:nil delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil] autorelease] show];
另外,我相信Apple不会在您的应用程序中使用exit()。他们总是希望用户使用“主页”按钮退出应用程序。 exit()调用是一个硬退出,这可能是您没有看到警报的原因。