我正在尝试environmentObject
在 watchOS6 应用程序中使用将我的数据模型绑定到我的视图。
我在 Xcode 11 中创建了一个简单的独立 Watch 应用程序。
我创建了一个新DataModel
课程
import Combine
import Foundation
import SwiftUI
final class DataModel: BindableObject {
let didChange = PassthroughSubject<DataModel,Never>()
var aString: String = "" {
didSet {
didChange.send(self)
}
}
}
在我的ContentView
结构中,我使用@EnvironmentObject
-
struct ContentView : View {
@EnvironmentObject private var dataModel: DataModel
var body: some View {
Text($dataModel.aString.value)
}
}
最后,我尝试将一个实例注入到类DataModel
中的环境中HostingController
——
class HostingController : WKHostingController<ContentView> {
override var body: ContentView {
return ContentView().environmentObject(DataModel())
}
}
但是,我收到一个错误:
Cannot convert return expression of type '_ModifiedContent<ContentView, _EnvironmentKeyWritingModifier<DataModel?>>' to return type 'ContentView'
错误是因为这WKHostingController
是一个需要具体类型的泛型 -WKHostingController<ContentView>
在这种情况下。
类似的方法UIHostingController
在 iOS 应用程序中非常有效,因为UIHostingController
它不是泛型类。
还有其他方法可以将环境注入到 watchOS 视图中吗?