UIAlertView を UIAlertController で置き換えたら不具合が発生

非推奨のAPIを使っていて新しいiOSで不具合が出たよ・ω・!

これの続き、
単に、UIAlertView を UIAlertController で置き換えたら いいのかと思ったら、そうはいかなかったよ。

というのは、UIViewController のサブクラスになってしまったため 今までになかった制約が出てきて、表示できなくなることがあるからでした

"whose view is not in the window hierarchy!" が出たり、それすらでなかったり・・・。
色々に多様な事例が起こってるのでコード試したけど、殆どダメでした・ω・

{
   
UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController];

//  UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController


   
UIAlertController *alert = [UIAlertController alertControllerWithTitle:strTitle message:strMessage preferredStyle: UIAlertControllerStyleAlert ];


   
UIWindow *alertWin = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];


    [alert addAction:[UIAlertAction actionWithTitle:btnMessage style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){

            [alertWin release];

    }]];

    

    if (windowId != nil) {
// どうしても表示できない場合

        alertWin.rootViewController = [[UIViewController alloc] init];

        alertWin.windowLevel = UIWindowLevelAlert + 1;

        [alertWin makeKeyAndVisible];

        [alertWin.rootViewController presentViewController:alert animated:NO completion:nil];

    } else

    {

        [vc presentViewController:alert animated:NO completion:nil];

    }

苦肉の策で書いたコードがこれ

めんどくさいので、UIWindows 作ってその上に表示して回避。OKを押したら全部解放
 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です