Xcode 11 beta:AppDelegate文件没有窗口全局变量

时间:2019-06-15 14:02:49

标签: xcode uikit appdelegate uiwindow

我在Xcode 11 Beta中遇到问题。

问题是我没有在window文件中声明默认的AppDelegate变量。

有人遇到同样的问题吗?

4 个答案:

答案 0 :(得分:1)

现在在Xcode 11中,这是在SceneDelegate中完成的

答案 1 :(得分:1)

默认var窗口:UIWindow?现在已在SceneDelegate.swift中移动。要在Xcode 11中设置rootViewController,可以在SceneDelegate.swift文件中工作。在场景委托中,必须创建窗口实例和根视图控制器,如下所示:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        // set or create your viewController here
        let yourViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(identifier: "yourViewController") as! YourViewController
        // set the rootViewController here using window instance
        self.window?.rootViewController = yourViewController
    }

这个答案也很有帮助:Why is manually setup root view controller showing black screen?

希望它会对您有所帮助!

答案 2 :(得分:0)

就我而言,这就是全部。

test()

答案 3 :(得分:0)

我的方法:

首先,在AppDelegate中使用您要访问的视图控制器的类创建一个静态属性,如下所示

class AppDelegate: UIResponder, UIApplicationDelegate {

    // MARK: Home
    static var homeViewController: HomeViewController?

    ...
}

然后,在视图控制器中

// MARK: - Managing the view
override func viewDidLoad() {
    super.viewDidLoad()

    // Singleton
    AppDelegate.homeViewController = self

    ...
}

使用方法:

extension UIViewController {
    var homeViewController: HomeViewController? {
        if let controller = self as? HomeViewController {
            return controller
        }

        return AppDelegate.homeViewController
    }
}