我想使用SwfitUI在macOS上制作一些应用程序。
在iOS之后,有SceneDelegate
(在iOS 13之后)。但是在macOS中,只有AppDelegate
。
好。我想在environmentObject
的{{1}}方法上使用SceneDelegate
scene
在我的window.rootViewController = UIHostingController(rootView: contentView
.environmentObject(mainController)
)
中使用@EnvironmentObject
属性包装器。
从字面上看,我无法在macOS中实现ContentView
,因为没有.environmentObject()
!
如何解决此问题? :(
请帮助
答案 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
}