将 environmentObject 从 NSHostingController 传递到 SwiftUI 视图

Bij*_*raj 1 macos swiftui

我有一个 macOS 故事板应用程序,其中有一个 SwiftUI 视图,该视图使用NSHostingController. 我需要EnvironmentObject从我的 NSHostingController传递一个到这个 SwiftUI 视图。我无法做到这一点。我目前已经编写了这段代码,但它不起作用。这里可能是什么问题?

import Cocoa
import SwiftUI

class SearchText: ObservableObject {
    @Published var text = ""
}

class HostingController: NSHostingController<SwiftUIView> {


    @objc required dynamic init?(coder: NSCoder) {

        super.init(coder: coder, rootView: SwiftUIView().environmentObject(SearchText()))
    }
}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 5

问题是修饰符.environmentObject返回的类型与您在泛型中指定的类型不同,即SwiftUIView.

这是可能的方法

class HostingController: NSHostingController<AnyView> {

    @objc required dynamic init?(coder: NSCoder) {
        super.init(coder: coder, rootView: 
            AnyView(SwiftUIView().environmentObject(SearchText())))
    }
}
Run Code Online (Sandbox Code Playgroud)