SwiftUI: Как получить окно в Objective- C - PullRequest
1 голос
/ 06 января 2020
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, и я пытаюсь получить окно в объективе - c, но теперь я не могу получить доступ к окну в swiftUI.

1 Ответ

2 голосов
/ 06 января 2020

Установите флажок scene.delegate, чтобы убедиться, что он соответствует протоколу, затем приведите к нему протокол, чтобы компилятор позволил вам использовать свойства и / или методы протокола.

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

if([scene.delegate conformsToProtocol:@protocol(UIWindowSceneDelegate)]){
    UIWindow *window = [(id <UIWindowSceneDelegate>)scene.delegate window];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...