是否可以从 ViewController 中的 SceneDelegate 访问窗口变量?基本上我需要一个替代方案,UIApplication.shared.delegate.window但找不到任何东西
Moj*_*ini 23
从iOS 13 开始,应用程序可以有多个活动窗口,因此您需要访问所需的窗口。所以你可以访问任何View这样的窗口:
self.view.window
Run Code Online (Sandbox Code Playgroud)
如果你真的想访问UISceneDelegate你可以像这样访问它:
self.view.window.windowScene.delegate
Run Code Online (Sandbox Code Playgroud)
假设
您可以SceneDelegate像这样实现一个辅助变量:
private(set) static var shared: SceneDelegate?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
Self.shared = self
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样在任何地方访问它:
SceneDelegate.shared?.window // or anything else
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8470 次 |
| 最近记录: |