macOS上的EnvironmentObject和SceneDelegate

时间:2019-11-30 08:49:42

标签: swift macos swiftui

我想使用SwfitUI在macOS上制作一些应用程序。

在iOS之后,有SceneDelegate(在iOS 13之后)。但是在macOS中,只有AppDelegate

好。我想在environmentObject的{​​{1}}方法上使用SceneDelegate

scene

在我的window.rootViewController = UIHostingController(rootView: contentView .environmentObject(mainController) ) 中使用@EnvironmentObject属性包装器。

从字面上看,我无法在macOS中实现ContentView,因为没有.environmentObject()

如何解决此问题? :(

请帮助

1 个答案:

答案 0 :(得分:1)

这是默认为macOS SwiftUI项目生成的AppDelegate,以及如何在其中为内容视图设置环境对象。

func applicationDidFinishLaunching(_ aNotification: Notification) {
    // Create content view
    let contentView = ContentView().environmentObject(AppSettings())

    // Create the window and set the content view. 
    window = NSWindow(
        contentRect: NSRect(x: 0, y: 0, width: 800, height: 600),
        styleMask: [.titled, .closable, .miniaturizable],
        backing: .buffered, defer: false)
    window.center()
    window.setFrameAutosaveName("Main Window")
    window.contentView = NSHostingView(rootView: contentView)
    window.makeKeyAndOrderFront(nil)
    window.autorecalculatesKeyViewLoop = true
}