将数字行移到另一个视图

时间:2019-12-05 15:44:03

标签: ios swift swiftui

大家好,早上好,我是SwiftUI的新手

我有带有名称和行号的表格视图(列表),并且工作正常

我想何时加入任何名称,在第二个视图中看到数字

我的代码在这里

import SwiftUI

struct ContentView: View {
    var mynames = allDatabase
    var body: some View {
        NavigationView {
            List {
                ForEach(mynames[1 ... 4] , id: \.self) { namm in

                    NavigationLink(destination: DDetail(name: namm.name)) {

                        HStack(spacing: 5.0) {

                            Text("\(self.mynames.Index(of: namm)) -")
                            Text("\(namm.name)")

                        }
                    }
                }
            }
        }
    }
}

struct DDetail: View {
    var name = ""
    var body: some View {
        VStack {
            Text("This is Number :")
            Text(name)
        }
    }
}

struct Database: Hashable {
    var name: String
}

let allDatabase = [
    Database(name: "Joy1"),
    Database(name: "Joy2"),
    Database(name: "Joy3"),
    Database(name: "Joy4"),
    Database(name: "Joy5"),
    Database(name: "Joy6"),
    Database(name: "Joy7")
]

2 个答案:

答案 0 :(得分:1)

首先,在提问时要更加具体,这样人们可以更轻松地为您提供帮助。

反正..

您要在 DDetail 中创建一个新的名称,这将导致一个空名称。因为您要传递数据,所以无需声明新变量。以下代码将解决此问题:

struct DDetail: View {

    // Edited following line:
    var name: String

    var body: some View {
        VStack {
           Text("This is Number :")
           Text(name)
        }
   }
}

如果您要传递数字而不是名称,请使用:

NavigationLink(destination: DDetail(name: self.mynames.firstIndex(of: namm)!))

答案 1 :(得分:0)

替换

NavigationLink(destination: DDetail(name: namm.name)) {

使用

NavigationLink(destination: DDetail(name:"\(self.mynames.firstIndex(of: namm)!)")) {