簡體   English   中英

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.

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