【发布时间】:2023-03-12 19:26:01
【问题描述】:
我对 Swift 和开发都是 100% 全新的。我已经阅读了几本书,我开始明白了,但我可能犯了一些愚蠢的错误。
问题是我有一个显示 Measurements() 集的列表,我正在尝试获取 NavigationLink,因此当触摸发生时,EditMeasurementView 会打开。我不确定我做错了什么。
这里是 EditMeasurementView:
struct EditMeasurementView: View {
@Binding var measurements: Measurements
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
struct EditMeasurementView_Previews: PreviewProvider {
static var previews: some View {
//EditChecklistItemView(checklistItem: .constant(ChecklistItem(name: "Sample item")))
EditMeasurementView(measurements: .constant(Measurements()))
}
}
这里是内容视图:
import SwiftUI
struct ContentView: View {
@ObservedObject var measurements = Measurements()
@State var newMeasurementViewIsVisible = false
var body: some View {
NavigationView {
List {
ForEach(measurements.items) { MeasurementItem in
NavigationLink(destination: EditMeasurementView(measurements: $measurements)) {
HStack {
Text("\(MeasurementItem.mdate)")
Spacer()
Text("\(MeasurementItem.weight)" + " lbs")
}
}
}
.onDelete(perform: measurements.deleteListItem)
.onMove(perform: measurements.moveListItem)
}
.navigationBarTitle("Measurements", displayMode: .inline)
.navigationBarItems(
leading: Button(action: { self.newMeasurementViewIsVisible = true
}) {
HStack {
Image(systemName: "plus.circle.fill")
Text("New")
}
},
trailing: EditButton()
)
}
.sheet(isPresented: $newMeasurementViewIsVisible) {
NewMeasurementItemView(measurements: self.measurements)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
swift 抛出的错误是:
Cannot convert value of type 'ObservedObject<Measurements>.Wrapper' to
expected argument type 'Binding<Measurements>'" on the NavigationLink
line in ContentView.
【问题讨论】:
-
EditMeasurementView是做什么用的?是编辑List中的单个测量项吗? -
正确。另一个列表最终用于编辑单个测量项的值。
-
好的,我想我可能有你想要的解决方案。但是您实际上想用
EditMeasurementView做什么?从列表中删除一个元素,或者例如更改它? -
我希望能够在此处修改现有值,即在之前添加新项目时更正错字。
-
@George_E 仅供参考-如果您查看我的编辑,我就知道了。感谢您的帮助!
标签: swift swiftui-navigationlink