看以前学长留下的demo的时候,发现在iOS13之后,原先的AppDelegate分成了AppDelegate和SceneDelegate
例如原先修改根视图控制器要在AppDelegate中,现在则在SceneDelegate中。
如今的SceneDelegate分担了一部分AppDelegate的功能:
一、iOS 13 之前的 AppDelegate
- 负责整个应用的生命周期管理,包括应用启动、进入后台、从后台恢复等。
- 管理应用的唯一窗口,设置根视图控制器来决定应用启动时显示的界面。
iOS 13 之前,在 AppDelegate 的某个方法里创建一个初始视图控制器并把它设置为应用窗口的根视图控制器,就决定了用户打开应用的第一个界面。
二、iOS 13 之后的 AppDelegate 和 SceneDelegate
-
AppDelegate:
- 依然负责一些通用的应用级事件,比如处理推送通知、应用的全局设置等。
- 对应用场景(窗口及视图的具体显示情况)的管理职责减少。
-
SceneDelegate:
- 专门管理应用的场景,每个场景对应一个窗口及相关的显示内容。比如在多窗口、分屏模式下,就会有多个场景,SceneDelegate 负责处理这些不同场景的连接、断开等生命周期事件。
- 在场景连接时,可以设置该场景对应的窗口的根视图控制器,决定这个窗口显示的内容。
像现在,更改根视图就只需要在SceneDelegate里面添加如下代码:
var window: UIWindow?
self.window?.rootViewController = PageControlViewController()

1172

被折叠的 条评论
为什么被折叠?



