繁体   English   中英

通过 NavigationLink 将数据从一个视图传递到另一个 SwiftUI

[英]Passing the data from one view to another SwiftUI via NavigationLink

我正在使用 SwiftUI 构建一个 iOS 应用程序。 老实说,我是 SwiftUI 和 Swift 以及 Native IOS 开发的新手。 我现在要做的是尝试通过 NavigationLink 将数据从一个屏幕传递到另一个屏幕。 但是目标提供程序的 PreviewProvider 抛出错误。

我有带有以下代码的 ContentView.swift

struct ContentView: View {
    var listItems = [ BleDevice ]()
    init() {
        listItems.append(BleDevice(id: "ID 1", name: "Name 1"))
        listItems.append(BleDevice(id: "ID 2", name: "Name 2"))
    }
    
    var body: some View {
        NavigationView {
            VStack() {
                List{
                    ForEach(listItems) {
                        item in VStack() {
                            Text(item.id)
                            Text(item.name)
                            NavigationLink(destination: ServicesListView(device: item)) {
                                Text("Connect")
                                    .padding()
                                    .foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/)
                           Spacer()
                        }
                    }
                }.navigationTitle("Devices")
                }
            }
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

如您所见,我正在尝试将设备对象传递给目标视图。 这是我的 ServicesListView.swift

import SwiftUI

struct ServicesListView: View {
    var device: BleDevice
    
    var body: some View {
        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
    }
}

struct ServicesListView_Previews: PreviewProvider {
    static var previews: some View {
        ServicesListView()
    }
}

但是,当我尝试编译该项目时,ServicesListView_Previews 类正在抱怨“调用中的参数‘设备’缺少参数”,如下所示。 我知道这是因为它没有使用参数初始化 ServicesListView 类。 但是我怎样才能将数据传递给它呢?

对于预览,只需像这样传递静态数据

struct ServicesListView_Previews: PreviewProvider {
    static var previews: some View {
        ServicesListView(device: BleDevice(id: "ID 1", name: "Name 1"))
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM