How set rootViewController in Scene Delegate iOS 13

后端 未结 4 2053
无人共我
无人共我 2020-12-10 20:40

Before changes in UIKit iOS 13 how I can set rootViewController at SceneDelegate?

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window:          


        
4条回答
  •  感情败类
    2020-12-10 21:24

    If you ever find yourself needing to access the window from the delegate (both iOS12 & iO13)to change the rootviewcontroller here's a couple of extensions I use:

       extension UIViewController {
            var appDelegate: AppDelegate {
            return UIApplication.shared.delegate as! AppDelegate
        }
        
        var sceneDelegate: SceneDelegate? {
            guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
                let delegate = windowScene.delegate as? SceneDelegate else { return nil }
             return delegate
        }
    }
    
    extension UIViewController {
        var window: UIWindow? {
            if #available(iOS 13, *) {
                guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
                    let delegate = windowScene.delegate as? SceneDelegate, let window = delegate.window else { return nil }
                       return window
            }
            
            guard let delegate = UIApplication.shared.delegate as? AppDelegate, let window = delegate.window else { return nil }
            return window
        }
    }
    

提交回复
热议问题