我在子视图中有一个选择器:
struct EventPickerView: View {
@Binding private(set) var selection: String
@State var labelText: String
@State var pickerData: [String]
init(
pickerData: [String],
selection: Binding<String>,
labelText: String
) {
self.pickerData = pickerData
self.labelText = labelText
self._selection = selection
}
var body: some View {
VStack {
HStack {
Text(labelText)
.font(.headline)
.foregroundColor(.white)
Spacer()
Picker(selection: $selection) {
ForEach(pickerData, id: \.self) {
item in
Text(item)
}
} label: {
}
.foregroundColor(.white)
.accentColor(.white)
}
.padding(5)
}
}
}
像这样添加到 parentView:
struct AddEventView<ViewModel: AddEventViewModeling & ObservableObject>: View {
@ObservedObject var viewModel: ViewModel
init(viewModel: ViewModel) {
self.viewModel = viewModel
}
@ViewBuilder
var body: some View {
VStack {
// other views
EventPickerView(pickerData: viewModel.eventCreatingPickerFields?.eventParticipants ?? [String](), selection: $viewModel.fieldType, labelText: "Match Type")
// other stuff
}
}
}
在我的 viewModel 中,我有一个
@Published
var,我想观察它在 Picker 中的变化
final class MyViewModel: ObservableObject {
@Published var fieldType: String = ""
}
问题是我收到警告:
未能对表达产生诊断;请提交错误 报告(https://swift.org/contributing/#reporting-bugs)并包括 项目
每当我尝试引用我的 viewModel (
$viewModel.fieldType
)。但是,如果我将其更改为.constant("Try")
,警告就会消失。