[英]How to pass a value to another ViewController by pushing in NavigationStack?
[英]NavigationStack pushing too many views
您好,我是 swiftui 的新手,我正在從一系列項目創建 NavigationStack。 當我單擊項目時,數組中的每個項目都被推入導航(我必須多次單擊后退按鈕才能返回到根目錄)我似乎無法找出它為什么這樣做。
主視圖...
struct ContentView: View {
@State private var BiasStruct: BiasData = BiasData.allBias
var body: some View {
VStack{
NavigationStack{
List{
ForEach(BiasStruct.biases, id: \.self){ entry in
NavigationLink(value: entry){
Text("\(entry.name)")
}
}
.navigationTitle("Biases")
.navigationDestination(for: Biase.self){ bias in
Text("\(bias.name)")
}
}
}
.padding(8)
}
}
}
偏置結構...
struct BiasData: Codable, Hashable {
var biases: [Biase]
static let allBias: BiasData = Bundle.main.decode(file: "sample2.json")
}
struct Biase: Codable, Hashable {
var id: Int
var name: String
var related, tags, quote, question: [String]
var description, overcome : String
var resourceName, resource: [String]
var example: [String]
var isFaved: Bool? = false
//I created this to set isFaved to false
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.id = try container.decode(Int.self, forKey: .id)
self.name = try container.decode(String.self, forKey: .name)
self.related = try container.decode([String].self, forKey: .related)
self.tags = try container.decode([String].self, forKey: .tags)
self.quote = try container.decode([String].self, forKey: .quote)
self.description = try container.decode(String.self, forKey: .description)
self.question = try container.decode([String].self, forKey: .question)
self.overcome = try container.decode(String.self, forKey: .overcome)
self.resourceName = try container.decode([String].self, forKey: .resourceName)
self.resource = try container.decode([String].self, forKey: .resource)
self.example = try container.decode([String].self, forKey: .example)
self.isFaved = false
}
}
這是因為
.navigationTitle("Biases")
.navigationDestination(for: Biase.self){ bias in
Text("\(bias.name)")
}
應該為List
而不是ForEach
定義:
NavigationStack{
List{
ForEach(BiasStruct.biases
}
// <-- NOT HERE
} // <-- HERE instead
.navigationTitle("Biases")
.navigationDestination(for: Biase.self){ bias in
Text("\(bias.name)")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.