簡體   English   中英

使用 SwiftUI 的多個列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM