Начиная с iOS 13, UIApplication
имеет свойство connectedScenes
, равное Set<UIScene>
.Каждая из этих сцен имеет delegate
, что является UISceneDelegate
.Таким образом, вы можете получить доступ ко всем делегатам таким образом.
Сцена может управлять одним или несколькими окнами (UIWindow
), и вы можете получить UIScene
окна из его свойства windowScene
.
Если вы хотите делегировать сцену для определенного контроллера представления, обратите внимание на следующее.Из UIViewController
вы можете получить его окно из его вида.Из окна вы можете получить его сцену и, конечно, из сцены вы можете получить его делегата.
Короче говоря, из контроллера представления вы можете сделать:
let mySceneDelegate = self.view.window.windowScene.delegate
Это может помочьнаписать небольшое расширение:
extension UIViewController {
var sceneDelegate: UISceneDelegate? {
return self.view.window?.windowScene?.delegate
}
}