私のアプリケーションでは、 for ループで UIAlertView を表示し、「はい」、「いいえ」の選択に基づいて表示したい
次のステップを実行したい。UIAlertView は実行を一時停止しないため、このシナリオを処理できません。counter global と all を使用すると、コードがより複雑になります。したがって、ユーザーがアラートボタンを選択するまで、実行を一時停止したい方法があります。
これに対する解決策を教えてください。
ありがとう。
私のアプリケーションでは、 for ループで UIAlertView を表示し、「はい」、「いいえ」の選択に基づいて表示したい
次のステップを実行したい。UIAlertView は実行を一時停止しないため、このシナリオを処理できません。counter global と all を使用すると、コードがより複雑になります。したがって、ユーザーがアラートボタンを選択するまで、実行を一時停止したい方法があります。
これに対する解決策を教えてください。
ありがとう。
まず、View Controller のファイルに追加<UIAlertViewDelegate>
します。.h
@interface ViewController : UIViewController <UIAlertViewDelegate> {
次に、アラートを作成し、必要なときに表示します。
- (void)showConfirmAlert
{
UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"Confirm"];
[alert setMessage:@"Do you pick Yes or No?"];
[alert setDelegate:self]; // Notice we declare the ViewController as the delegate
[alert addButtonWithTitle:@"Yes"];
[alert addButtonWithTitle:@"No"];
[alert show];
[alert release];
}
ボタンのクリックをキャッチするデリゲート メソッドを実装します。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
// Yes, do something
}
else if (buttonIndex == 1)
{
// No
}
}
ほら、両方の状況を処理できます。
編集:alertView:clickedButtonAtIndex:
アラートが多数ある場合は、それらをすべてグローバル オブジェクトとして宣言して、メソッド内で各アラートを区別できるようにします。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView == alertOne) { //alertOne is a globally declared UIAlertView
if (buttonIndex == 0)
{
// Yes, do something
}
else if (buttonIndex == 1)
{
// No
}
} else if (alertView == alertTwo) { //alertTwo is a globally declared UIAlertView
if (buttonIndex == 0)
{
// Yes, do something
}
else if (buttonIndex == 1)
{
// No
}
}
}
AlertViewを表示すると、その時点でループが中断され、ユーザーの選択により、ループまたはさらに実行が再度実行されます。ところで、あなたは実際に何を達成したいですか?