gpt4 book ai didi

iphone - UIAlertViewDelegate 未按预期运行

转载 作者:行者123 更新时间:2023-11-28 20:28:57 24 4
gpt4 key购买 nike

我有一个非常简单的流程运行,在每一轮简单的游戏之后计算分数,更新标签和所有正常的,非常简单的东西。我有一个 UIAlertView 可以通知玩家他/她的表现。我使用 UIAlertViewDelegate 来推迟所有更新、控件重置等,直到 UIAlertView 被关闭之后。这些方法是 [startNewRound]、[startOver] 和 [updateLabels]。很明显他们都做了什么。不管怎样,当用户打到第十轮时,我制作了另一个 UIAlertView 通知玩家游戏已经结束并显示总分。同样,我希望使用委托(delegate)将重置推迟到 AlertView 被关闭之后。唯一的问题是,对于 endGame AlertView,它似乎使用了第一个 AlertView 的委托(delegate)方法,导致游戏继续新一轮而不是从头开始。我希望这是有道理的。无论如何,这是我的代码片段。

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

然后是委托(delegate)方法:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startNewRound];
[self updateLabels];
}

- (void)endGame:(UIAlertView *)endGame didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startOver];
}

原来如此。正如我提到的,endGame AlertView 似乎正在使用 alertView 的委托(delegate),因此没有激活 [self startOver] 方法。所有方法都有效,只是 AlertView 使用了不正确的委托(delegate)方法。

问候,
迈克

最佳答案

像这样更改您的代码,

    if (round == 10){
UIAlertView *endGame = [[UIAlertView alloc]
initWithTitle: @"End of Game"
message: endMessage
delegate:self
cancelButtonTitle:@"New Game"
otherButtonTitles:nil];
endGame.tag = 111;
[endGame show];
}
else {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate:self
cancelButtonTitle:@"Next"
otherButtonTitles:nil];
alertView.tag = 222;
[alertView show];
}

并将方法委托(delegate)为,

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(alertView.tag == 111)
{
[self startNewRound];
[self updateLabels];
}
else if(alertView.tag == 222)
{
[self startOver];

}
}

关于iphone - UIAlertViewDelegate 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com