【问题标题】:SwiftUI: How to get window in Objective-CSwiftUI:如何在 Objective-C 中获取窗口
【发布时间】:2020-04-24 01:55:45
【问题描述】:
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 中访问窗口。

【问题讨论】:

    标签: objective-c swift swiftui uiscenedelegate


    【解决方案1】:

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

    UIScene *scene = [[[[UIApplication sharedApplication] connectedScenes] allObjects] firstObject];
    
    if([scene.delegate conformsToProtocol:@protocol(UIWindowSceneDelegate)]){
        UIWindow *window = [(id <UIWindowSceneDelegate>)scene.delegate window];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多