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

this is in Swift, I want to convert this into Objective-C. I have tried this:

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

but now there is no SceneDelegate; in Objective-C there is UIKit's UIWindowSceneDelegate.

also I wasn't able to access UIScenedelegate. Scenedelegate is in Swift and I am trying to get window in objective-c but now I'm not able to access window in swiftUI.

1 Answer 1

5

Check scene.delegate to make sure it conforms to the protocol, then cast the protocol on it so the compiler will let you use the protocol properties and/or methods.

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

if([scene.delegate conformsToProtocol:@protocol(UIWindowSceneDelegate)]){
    UIWindow *window = [(id <UIWindowSceneDelegate>)scene.delegate window];
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.