当前位置:   article > 正文

Xcode11 后Appdelegate自定义UIWindow对象失败详解。_xcode appdelegate window 为空

xcode appdelegate window 为空

在Xcode11前我们可以在AppDelegate的钩子didFinishLaunchingWithOptions进行自定义UIWindow对象。但是Xcode11后自定义UIWindow会报错无法启动APP。
是因为iOS13中AppDelegate的职责发生了改变: iOS13之前,AppDelegate全权处理App生命周期和UI生命周期;
iOS13之后,AppDelegate的职责是: 1、处理 App 生命周期 2、新的 Scene Session 生命周期 那UI的生命周期交给新增的Scene Delegate处理, AppDelegate不在负责UI生命周期,所有UI生命周期交给SceneDelegate处理。所以我们需要在SceneDelegate的scene钩子进行自定义UIWindow初始化。

1.首先我们不仅要删除info.plist中的Main storyboard file base name还需要删除Application Scene Manifest下的Storyboard Name。具体看图
在这里插入图片描述
2.然后在 SceneDelegate 中进行初始化UIWindow.

// SceneDelegate.m

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
    self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene* )scene];
    self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
    // 初始化跟视图
    UIViewController* ROOTVC = [[ViewController alloc] init];
    // 初始化层级导航控制
    UINavigationController* ROOTNavigation = [[UINavigationController alloc]initWithRootViewController:ROOTVC];
    self.window.rootViewController = ROOTNavigation;
    // 显示
    [self.window makeKeyAndVisible];
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/124991
推荐阅读
相关标签
  

闽ICP备14008679号