[英]Multiple List with SwiftUI
假設我有一個像這樣的數組數組:
var arrays = [["one", "two", "three", "Four"], ["four", "five", "six"]]
我的目標是為每個子數組的每個子數組創建一個列表,然后導航到下一個子數組。
Example 1: one -> (NavigationLink) two -> (NavigationLink) three -> (NavigationLink) Four.
Example 2: four -> (NavigationLink) five -> (NavigationLink) six.
每個箭頭是每個列表之間的導航鏈接。
這是我迄今為止嘗試過的:
struct ContentView: View {
let arrays = [["A", "B", "C", "D"], ["E", "F", "G", "H"]]
var body: some View {
NavigationView {
List {
ForEach(arrays, id: \.self) { item in
NavigationLink( destination: DestinationView(items: item)) {
Text(item.first!).font(.subheadline)
}
}
}
.navigationBarTitle("Dash")
}
}
}
struct DestinationView : View {
var items: [String]
var body: some View {
List {
ForEach(items, id: \.self) { item in
NavigationLink( destination: DestinationView(items: items)) {
Text(item).font(.subheadline)
}
}
}
}
}
您可以通過在每次將數組傳遞給DestinationView
時對數組進行切片來做到這一點
import SwiftUI
struct ContentView: View {
let arrays = [["A", "B", "C", "D"], ["E", "F", "G", "H"]]
var body: some View {
NavigationView {
List {
ForEach(arrays, id: \.self) { item in
NavigationLink( destination: DestinationView(items: Array(item[1..<item.count]))) {
Text(item.first!).font(.subheadline)
}
}
}
.navigationBarTitle("Dash")
}
}
}
struct DestinationView : View {
var items: [String]
var body: some View {
List {
if self.items.count > 0 {
NavigationLink( destination: DestinationView(items: Array(items[1..<items.count]))) {
Text(items[0]).font(.subheadline)
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.