swift - NavigationLink 绑定(bind)问题

标签 swift swiftui-navigationlink

我对 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()))
    }
}

这是内容 View :

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 中,我绑定(bind)到了错误的对象。我应该绑定(bind)到MeasurementItem 而不是Measurements。 Measurements 是包含MeasurementItems 的数组,但这里我只编辑一组MeasurementItems。

关于swift - NavigationLink 绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554109/

相关文章:

swift - 我的字典的自定义可哈希结构

ios - 从容器 View 继续

SwiftUI NavigationLink 控制台错误(SwiftUI 在推送 aNavigationLink 时遇到问题。请提交错误。)

swiftui - 如何使用 SwiftUI 更改主题颜色?

ios - 从共享数据源中删除元素时,Swift CollectionView 会导致应用程序崩溃

ios - 从 NSData 对象在 Swift 中创建一个数组

swift - 删除 UINavigationBar 后退按钮额外的填充?

swiftui - SwiftUI 中新的 NavigationStack 过渡,如何从默认幻灯片更改为自定义或显示?

list - SwiftUI - List/ForEach 与 NavigationLink 和 isActive 结合使用无法正常工作

ios - 在 SwiftUI 中使用 List 时如何使用 NavigationLink isActive 绑定(bind)?