美文网首页
删除 SceneDelegate 新特性,使用 AppDeleg

删除 SceneDelegate 新特性,使用 AppDeleg

作者: 独木舟的木 | 来源:发表于2020-04-26 11:50 被阅读0次

新建 Xcode 项目

在 Xcode 11 环境下新建一个 Single View App 项目,打开这个新的项目,可以看到 Xcode 除了会自动生成 AppDelegate 文件外,还会自动生成一个名为 SceneDelegate 的文件。

项目目录

⚠️ SceneDelegate 是 iOS 13 下的新特性。这是为了实现 iPadOS 支持多窗口功能的结果,如果你不需要多窗口(multiple windows)功能,或者说很多旧应用或者框架还未适配该特性,如果基于 SceneDelegate 并且引入未适配的框架运行应用会导致崩溃!所以,下面首先介绍如何删除 SceneDelegate 特性,并继续使用旧的 AppDelegate 特性管理应用。

  1. 首先打开 Info.plist 文件,找到下面这两个属性并删除。
  1. 删除 SceneDelegate 类文件,也可以保留不用管它,但既然我们用不到就删了吧。
  2. 修改 AppDelegate.h 文件,加上 UIWindow 属性。
#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow * window;

@end
  1. 修改 AppDelegate.m 文件,设置 UIWindow 设置主窗口,并删除多余的 <UISceneSession> 代理协议
#import "AppDelegate.h"
#import "ViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // 设置根视图控制器
    ViewController *controller = [[ViewController alloc] init];
    // 窗口根视图控制器
    self.window.rootViewController = controller;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    return YES;
}

// 下面多余的代码请删除

@end

键盘快捷键 cmd + R 运行项目,应用应该可以正常运行了。

参考

相关文章

网友评论

      本文标题:删除 SceneDelegate 新特性,使用 AppDeleg

      本文链接:https://www.haomeiwen.com/subject/ngsdwhtx.html