私は非常に単純なプロセスを実行しています。単純なゲームの各ラウンドの後、スコアが計算され、ラベルが更新され、通常の非常に単純なものがすべて実行されます。私は、プレイヤーがどのようにパフォーマンスしたかをプレイヤーに知らせる 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 が正しくないデリゲート メソッドを使用しているだけです。
よろしく、
マイク