[問題] 如何讓UIAlertController顯示在前面

看板MacDev作者 (Iamyourfather)時間10年前 (2015/01/25 19:36), 10年前編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
在AppDelegate 想做出錯誤時白色背景(whiteView)前面放UIAletController的dialog 但不管怎麼改都是whiteView在UIAlertController上面 如果把whiteView用sendSubviewToBack背景又會變成viewController的畫面 雖然把UIAlertController改成用UIAlertView可以解決這個問題 不過有很多method想用UIAlertController去執行 以下簡單的原碼=> #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. // a為flag //[self alert_Dialog:@"0"] [self alert_Dialog:@"0"]; } -(void)alert_Dialog :(NSString *)str { //_window.rootViewController = [[UIViewController alloc] init]; if ([str isEqualToString:@"1"]) { NSLog(@"OK"); }else{ UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"錯誤" message:@"error" preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { //按下"確定"後結束程式 exit(1); } ]]; //白色背景 [self whiteView]; [self.window.rootViewController presentViewController:alert animated:YES completion:nil]; } } -(void)whiteView { CGRect rect1 = [[UIScreen mainScreen] bounds]; UIView *myView = [[UIView alloc] initWithFrame:rect1]; myView.backgroundColor = [UIColor whiteColor]; [self.window addSubview:myView]; } @end =================================================================== 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 126.185.171.225 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1422185765.A.6E4.html

01/25 20:38, , 1F
presentViewController之後已經是不同的viewController了
01/25 20:38, 1F

01/25 20:38, , 2F
所以key window會跟著換一個
01/25 20:38, 2F

01/25 20:40, , 3F
呃,好像搞錯了,應該是你不能在self.window上加view
01/25 20:40, 3F

01/25 20:42, , 4F
window的view的優先層級比rootViewController還要高,
01/25 20:42, 4F

01/25 20:42, , 5F
所以永遠會在最上方
01/25 20:42, 5F

01/26 10:24, , 6F
1. 抓出currentViewController 2.用UIAlertView
01/26 10:24, 6F

01/26 11:05, , 7F
UIAlertView 已經被 deprecated 了, 不要用
01/26 11:05, 7F

01/26 13:09, , 8F
要支援IOS7 不能用UIALERTCONTROLLER吧?
01/26 13:09, 8F

01/26 15:53, , 9F
推樓上 還要並行一段時間再修整
01/26 15:53, 9F
了解 我今天再去試一下好了~ 不過之所以用rootViewController是因為在AppDelegate之下的關係 如果沒加上去的話會錯誤 ※ 編輯: tonyshan (126.155.167.245), 01/27/2015 05:29:54 ※ 編輯: tonyshan (126.155.167.245), 01/27/2015 05:33:05
文章代碼(AID): #1KnDKbRa (MacDev)
文章代碼(AID): #1KnDKbRa (MacDev)