xcode11 新建项目中的SceneDelegate

1、Xcode 11 默认是会创建通过 UIScene 管理多个 UIWindow 的应用,工程中除了 AppDelegate 外会多一个 SceneDelegate

2、AppDelegate和SceneDelegate这是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。info.plist中 Enable Multiple Windows,需要将其设置为“ YES”以支持多个窗口。

我们可以看下info.plist文件和工程项目文件的变化如图:




适配方案

1、如果我们不开发iPadOS多窗口APP,SceneDelegate窗口管理我们可以不需要直接删掉就好了。删除掉info.plist中Application Scene Manifest选项,同时,文件SceneDelegate可删除可不删

2、相关代码注释掉

#pragma mark - UISceneSession lifecycle
 - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {        
     return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:  connectingSceneSession.role];
}

 - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {   
}   

//注释掉这两个方法。

3、Appdelegate新增windows属性

在APPdelegate.h中添加@property (strong, nonatomic) UIWindow * window; 属性

    ///做完这些就跟以前一样啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容