hachinoBlog

hachinobuのエンジニアライフ

UIAlertViewの非同期処理を遅らせる方法

ドハマりしたからメモ〜。
パスワード認証とかで認証がOKだったら次の画面に遷移とかを実装してたんだけど
UIAlertViewのデリゲートは非同期処理だからデリゲート処理が終わる前に次の処理に流れてしまっていたので苦労した。。
デリゲートの処理(ボタンを押した)後に後続の処理を順番通りに流すにアラートのshowを呼び出す部分で下記の実装をする。

[alert show];
alertFinished = NO;  //グローバル変数
while (alertFinished == NO) {
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5f]];
}
[alert release];

何かボタンを押したらalertFinishedをYESに設定してあげることでアラート処理を抜けれる。


参考URL
http://teapipin.blog10.fc2.com/blog-entry-224.html

これが出来なくて一日中悩んでいたよ。。