whose view is not in the window hierarchy!##which is already presenting##while a presentation is ...

  • 这是最近在做强制更新的小功能时 碰见的三个小警告⚠️ 简述一下解决的思路
  • 你遇见的场景可能与此并不雷同 所以仅供参考

whose view is not in the window hierarchy!

Warning: Attempt to present <UIAlertController: 0x7fc5e9048c00> on <ViewController: 0x7fc5e7e0d9e0> 
whose view is not in the window hierarchy!

这个警告是

[self.window makeKeyAndVisible];
之前拿
self.window.rootViewController presentViewController:alertVc animated:YES completion:nil];
导致的
也是这三个⚠️里解决最容易的一个

which is already presenting

这个警告是

我在didFinishLaunchingWithOptions里进行了
self.window.rootViewController presentViewController:alertVc animated:YES completion:nil];
又在applicationDidBecomeActive里进行了
self.window.rootViewController presentViewController:alertVc animated:YES completion:nil];
相当于间隔了1s?进行了两次self.window.rootViewController的present操作 
显示这并不是合适的

于是将代码修改为

 UIWindow *fK = [[UIApplication sharedApplication] keyWindow];
        //如果window已有弹出的视图,会导致界面无法弹出,页面卡死,这里需要先把视图关闭,再弹出
        if (fK.rootViewController.presentedViewController != nil) {
            [fK.rootViewController.presentedViewController dismissViewControllerAnimated:NO completion:nil];
           }
            [fK.rootViewController presentViewController:alertVc animated:YES completion:nil];
       }

如上改完后_报了第三个警告⚠️也就是

while a presentation is in progress!

考虑到有可能是dismiss没执行完所以最终把代码改成这 总算没⚠️了

UIWindow *fK = [[UIApplication sharedApplication] keyWindow];
        //如果window已有弹出的视图,会导致界面无法弹出,页面卡死,这里需要先把视图关闭,再弹出
        if (fK.rootViewController.presentedViewController != nil) {
            [fK.rootViewController.presentedViewController dismissViewControllerAnimated:NO completion:^{
                
                [fK.rootViewController presentViewController:alertVc animated:YES completion:nil];
                
            }];
            
        }else{
            [fK.rootViewController presentViewController:alertVc animated:YES completion:nil];
        }
        
      }
  • 我确信这些⚠️之前见过 可能有时候不影响效果 稀里糊涂的就过去了
  • 但是我又确信如果一个问题 你不能彻底整明白 你放一百个心 不就的将来 你还会再次遇见 就是这么神奇
  • 所以很有必要给丫死磕到底 愚公移山

鉴于能力有限 水平一般 理解有误之处 深望不吝指出 阿门!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容