【Objective-C】アラート(UIAlertView)でボタンを押すまで次の処理を待つ方法
2011-12-16 (金) 23:19 Objective-C
今回はアラート(UIAlertView)でボタンを押すまで次の処理を待つ方法についてです。
アラート(UIAlertView)が表示された後の処理はすぐに実行されてしまいます。
てぃーがよく使うVisual Basic、Visual C#では処理待ちになるのがふつうなので最初あせりました。
アラートのボタンが押され、表示が消えるまで処理を中断しないといけない場合は結構あることでしょう。
押したボタンによってその後の処理を変えたい場合など。
この場合下のようにして処理を中断します。
<前提>
//グローバル変数として宣言します
Bool alertFinished;
<アラートの表示>
//アラートを表示
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
message:NSLocalizedString(@"置き換えますか?",@"")
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[alert show];
//アラートでボタンを押すまで動作を中断する(待つ)
alertFinished = NO;
while (alertFinished == NO) {
[[NSRunLoop currentRunLoop]
runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5f]]; //0.5秒
}
[alert release];
//行いたい処理
・・・
<アラートの再開>
// アラートのボタンが押された時に呼ばれる
-(void)alertView:(UIAlertView*)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex
{
//何らかの処理
・・・
//アラートの再開
alertFinished = YES;
}
NSRunLoopのdateWithTimeIntervalSinceNowで繰り返し時間(秒)を設定し、その時間ごとに実行を遅らせるようです。
alertFinished = YESとなったらwhile内に入らなくなるので遅らせていた実行が動き出すという仕組みです。
NSRunLoopはアラート以外の何かにも使えそうですね。
(開発中に「先に進まないでくれ~!」と思ったときが出番でしょう!!)
→NSRunLoop Class Reference
日本語版はないみたいなのでがんばりましょう。
iPhoneアプリ開発はそういうものです。。。
↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
- 関連記事
-
- 【Objective-C】配列(NSArray、NSMutableArray)の要素(値)をランダムに並べ替える方法 (2011/12/17)
- 【Objective-C】配列(NSArray、NSMutableArray)の要素(値)を逆順に取得する方法 (2011/12/16)
- 【Objective-C】アラート(UIAlertView)でボタンを押すまで次の処理を待つ方法 (2011/12/16)
- 【Objective-C】タイマー(NSTimer)の止め方(停止方法) (2011/12/11)
- 【Objective-C】テーブルビュー(UITableView)で各セルごとに設定をするときの注意点(目印について) (2011/12/11)