objective-c - SwiftUI:如何在 Objective-C 中获取窗口

标签 objective-c swift swiftui uiscenedelegate

let scene = UIApplication.shared.connectedScenes.first
if let sd: SceneDelegate = (scene?.delegate as? SceneDelegate) {
    let window = sd.window
}

这是用 Swift 编写的,我想将其转换为 Objective-C。我已经尝试过这个:

UIScene *scene = [[[[UIApplication sharedApplication]connectedScenes]allObjects]firstObject];

但是现在没有SceneDelegate;在 Objective-C 中有 UIKit 的 UIWindowSceneDelegate .

我也无法访问 UIScenedelegate。 Scenedelegate 在 Swift 中,我试图在 Objective-C 中获取窗口 但现在我无法访问 swiftUI 中的窗口。

最佳答案

检查scene.delegate以确保它符合协议(protocol),然后将协议(protocol)转换到它上面,以便编译器允许您使用协议(protocol)属性和/或方法。

UIScene *scene = [[[[UIApplication sharedApplication] connectedScenes] allObjects] firstObject];

if([scene.delegate conformsToProtocol:@protocol(UIWindowSceneDelegate)]){
    UIWindow *window = [(id <UIWindowSceneDelegate>)scene.delegate window];
}

关于objective-c - SwiftUI:如何在 Objective-C 中获取窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613517/

相关文章:

ios - 在 App Purchase ios 中 - 产品详细信息未显示

objective-c - 如何在 objective-c 中编辑 PDF?

ios - 如果我有免费的 iOS 开发人员配置文件,如何调试 `Push Notifications`?

SwiftUI:以某种方式在较小设备上调整 VStack 中的间隔符大小

SwiftUI MenuBarExtra 图标和深色模式

ios - 如何使用 UIScrollView 实现 UIPageViewController?

ios - xcode UIImageView cornerRadius 只有一侧

ios - 将 ARSCNView 场景背景内容设置为 iPhone X 相机

ios - "unexpectedly found nil"超出 viewDidLoad

xcode - 如果@EnvironmentObject,如何创建通用?