I have Array of 4 items, and I show 2 of them in table.
And selecting the item in table, I want to print out selected row all items from array.
It works only if I have not sorted the table first.
As soon I sort the table I can't find reference to the array index.
Is there any way to find array index?
sample:
struct testtable: View {
struct Person: Identifiable {
let givenName: String
let familyName: String
let index: String
let id: Int
}
@State private var people = [
Person(givenName: "Juan", familyName: "Chavez", index: "0", id: 0),
Person(givenName: "Mei", familyName: "Chen", index: "1", id: 1),
Person(givenName: "Tom", familyName: "Clark", index: "2", id: 2),
Person(givenName: "Gita", familyName: "Kumar", index: "3", id: 3),
]
@State private var sortOrder = [KeyPathComparator(\Person.givenName)]
@State private var selection : Person.ID?
var body: some View {
Button(action: {
print("array[\(self.selection)]")
let arrayindex: Int = self.selection!
print(people[arrayindex])
}){
Label("Print Array Items", systemImage: "doc.text.magnifyingglass")}
Table(people, selection: $selection, sortOrder: $sortOrder) {
TableColumn("Given Name", value: \.givenName)
TableColumn("Family Name", value: \.familyName)
}
.onChange(of: sortOrder) {
people.sort(using: $0)
}
}
}
2
0
1.8k