簡體   English   中英

帶有狀態和綁定的 ForEach NavigationLink

[英]ForEach NavigationLink with State and Binding

我正在嘗試使用 NavigationLink 生成 ForEach 並使用 State 和 Binding 來傳遞一些實體:

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc

    @FetchRequest(
        entity: MyEntity.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \MyEntity.name, ascending: true)
        ]

    ) var entries: FetchedResults<MyEntity>

    var body: some View {
        NavigationView {
            List {
                ForEach(entries, id: \.self) { (entry: MyEntity) in
                    NavigationLink(destination: DetailView(myEntry: $entry)) {
                        Text(entry.name!)
                    }
                }.
            }
        }
    }
}

然后是以下視圖:

struct DetailView: View {
    @Binding var myEntry: MyEntity

    var body: some View {
        Text(myEntry.name!)
    }
}

問題是我無法將值傳遞給詳細信息視圖,因為錯誤:

Use of unresolved identifier '$entry'

這里有什么問題以及如何解決這個問題?

如果我只有一個簡單的@State ,通過綁定傳遞它沒有問題,但我想/需要在 ForEach 中使用它來獲取FetchedResults

編輯:如果我刪除$我得到Cannot convert value of type 'MyEntity' to expected argument type 'Binding<MyEntity>'

EDIT2:目的是將一些對象傳遞給 DetailView,然后再將其傳遞回 ContentView

ForEach使用以下內容

   ForEach(entries, id: \.self) { entry in
        NavigationLink(destination: DetailView(myEntry: entry)) {
            Text(entry.name!)
        }
    }

以及DetailView的以下內容

struct DetailView: View {
    var myEntry: MyEntity

    var body: some View {
        Text(myEntry.name!)
    }
}

MyEntity是類,因此您可以通過引用傳遞對象並在DetailView更改它,從而更改相同的對象。

FetchedResults<MyEntity> entities不符合BindingDynamicProperty 要鍛煉的$符號必須符合Binding

您可以在ObservableObject創建FetchedResultsController以獲得與@FetchRequest相同的功能,並能夠在EnvironmentObjectObservedObject傳遞值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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