Xcode11新建项无法使用Main.storyboard
Xcode11之后,新创建的项目会自动创建SceneDelegate文件
如果删除这个文件后,项目将无法进入到Main.storyboard中。
解决方法:在info.plist文件中搜索SceneDelegate,会搜索到Application Scene Manifest下存在这个文件名,直接删除即可,正常进入Main.storyboard中。
SceneDelegate的作用
在Xcode11以后新建项目会自动创建SceneDelegate文件
主要是:
iOS13中appdelegate的职责发现了改变:
iOS13之前,AppDelegate的职责全权处理App生命周期和UI生命周期;
iOS13之后,AppDelegate的职责是:
1、处理 App 生命周期
2、新的 Scene Session 生命周期
而SceneDelegate的指责是:
1、管理UI的生命周期
因此初始化window方法需要改变:
现在不再Appdelegate
的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
进行初始化,转交给SceneDelegate
的willConnectToSession:
方法进行根控制器设置:
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
UIWindowScene *windowScene = (UIWindowScene *)scene;
self.window = [[UIWindow alloc] initWithWindowScene:windowScene];
self.window.frame = windowScene.coordinateSpace.bounds;
self.window.rootViewController = [UITabBarController new];
[self.window makeKeyAndVisible];
}
所以在新创建的项目中如果删除SceneDelegate,则要修改info.plist文件中的SceneDeleagte配置