私は非常に単純なプロセスを実行しています。単純なゲームの各ラウンドの後、スコアが計算され、ラベルが更新され、通常の非常に単純なものがすべて実行されます。私は、プレイヤーがどのようにパフォーマンスしたかをプレイヤーに知らせる UIAlertView を持っています。UIAlertViewDelegate を使用して、UIAlertView が閉じられるまで、すべての更新、コントロールのリセットなどを延期します。メソッドは [startNewRound]、[startOver]、および [updateLabels] です。彼らが何をしているのかは明らかです。とにかく、ユーザーがラウンド 10 に達したときに、ゲームが終了したことをプレーヤーに通知し、全体のスコアを表示する別の UIAlertView を作成しました。繰り返しますが、デリゲートを使用して、AlertView が閉じられるまでリセットを延期したいと考えていました。唯一の問題は、endGame AlertView では、最初の AlertView を使用しているように見えることです。のデリゲート メソッドにより、ゲームが最初からではなく、新しいラウンドで続行されます。これが理にかなっていることを願っています。とにかく、ここに私のコードのスニペットがあります。
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 が正しくないデリゲート メソッドを使用しているだけです。
よろしく、
マイク