我有一个macOS故事板应用程序,其中有一个NSHostingController
托管的SwiftUI视图。我需要从我的NSHostingController传递一个EnvironmentObject
到这个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()))
}
}
答案 0 :(得分:4)
问题在于修饰符.environmentObject
返回的类型与您在泛型中指定的类型不同,即SwiftUIView
。
这是可行的方法
class HostingController: NSHostingController<AnyView> {
@objc required dynamic init?(coder: NSCoder) {
super.init(coder: coder, rootView:
AnyView(SwiftUIView().environmentObject(SearchText())))
}
}