SceneDelegate初次探索
大约一年前左右,跟新Xcode之后,发现了XCode中生成的模版目录中,多出了SceneDelegate的双文件(Objective-c版本);并且在Applegete中原先作为唯一的显式公共属性UIWindow *window也消失不在-——出现在了SceneDelegate.h的对应位置。
一.删除掉SceneDelegate双文件,并且在infoPlist文件中删除掉故事板对应配置、bundle中删除掉故事版。
在原来的appDelegate中补充上原来遗失的UIWindow *window和删除与sceneDelegate相关的方法,并按照老的步骤初始化window和底层容器视图控制器,就可以像原来一样进行使用。
二.在新式的SceneDelegate.m中写上如下的代码也可以得到和第一部分一样的效果:
- (void)scene:(UIScene*)scenewillConnectToSession:(UISceneSession*)sessionoptions:(UISceneConnectionOptions*)connectionOptions {
UIWindowScene*winScene = [[UIWindowScene alloc] initWithSession:sessionconnectionOptions:connectionOptions];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.windowScene= winScene;
ViewController *vc = [[ViewController alloc]init];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
}
注:window属性在SceneDelegate的头文件中进行了显式声明。
网友评论