Xcode11 刪除storyboard
Xcode 11中創建一個名爲的新項目時,多了一個新類SceneDelegate:
刪除main.storyboard — 刪除info.plist storyboard name main general 刪掉 main interface 內main
不一樣:之前在AppDelegate
在screenDelegate.m 寫入UIWindow
self.window = [[UIWindow alloc] initWithWindowScene:scene];
@implementation SceneDelegate
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
self.window = [[UIWindow alloc] initWithWindowScene:scene];
self.window.backgroundColor = [UIColor whiteColor];
ViewController *VC = [[ViewController alloc]init];
NavihationViewController *NVC = [[NavihationViewController alloc]initWithRootViewController:VC];
[self.window setRootViewController:NVC];
[self.window makeKeyAndVisible];
}
@end
新的Xcode項目時,你會看到你的AppDelegate分爲兩部分:AppDelegate和SceneDelegate這是iPadOS帶來的新的多窗口支持的結果,並且有效地將應用程序委託的工作分成兩部分。
從iOS 13開始,您的應用代表應該:
- 設置應用程序期間所需的任何數據。
- 響應任何專注於應用的事件,例如與您共享的文件。
- 註冊外部服務,例如推送通知。
- 配置您的初始場景。
相比之下,場景代表可以處理應用程序用戶界面的一個實例。因此,如果用戶創建了兩個顯示您的應用程序的窗口,則您有兩個場景,均由同一個應用程序委託支持。
請記住,這些場景旨在彼此獨立工作。因此,您的應用程序不再移動到後臺,而是單個場景執行 - 用戶可以將一個移動到後臺,同時保持另一個打開。
在iOS 13中的新頂級對象是一個UIWindowScene