我有一个非常简单的过程,在每轮简单游戏之后计算分数,更新标签和所有正常的,非常简单的东西。我有一个 UIAlertView 通知玩家他/她的表现。我使用 UIAlertViewDelegate 来推迟所有更新、重置控件等,直到 UIAlertView 被解除。方法是 [startNewRound]、[startOver] 和 [updateLabels]。他们都在做什么是相当明显的。无论如何,当用户打到第 10 轮时,我制作了另一个 UIAlertView,通知玩家游戏已经结束并显示总分。同样,我希望使用委托将重置推迟到 AlertView 被解除之后。唯一的问题是,对于 endGame AlertView,它似乎使用的是第一个 AlertView' s 委托方法导致游戏继续新一轮而不是从头开始。我希望这是有道理的。无论如何,这是我的代码片段。
if (round == 10){
UIAlertView *endGame = [[UIAlertView alloc]
initWithTitle: @"End of Game"
message: endMessage
delegate:self
cancelButtonTitle:@"New Game"
otherButtonTitles:nil];
[endGame show];
}
else {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate:self
cancelButtonTitle:@"Next"
otherButtonTitles:nil];
[alertView show];
}
然后是委托方法:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startNewRound];
[self updateLabels];
}
- (void)endGame:(UIAlertView *)endGame didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startOver];
}
就这样。正如我所提到的,endGame AlertView 似乎正在使用 alertView 的委托,因此没有激活该[self startOver]
方法。所有方法都有效,只是 AlertView 使用了不正确的委托方法。
问候,
迈克