簡體   English   中英

NavigationLink 中的選擇不起作用

[英]Selection in NavigationLink is not working

我的iPad應用程序有以下代碼:

struct ContentView: View {

    @State var selectionIndex: Int? = nil

    var body: some View {
        NavigationView {
            VStack {
                ForEach(0..<5) { tag in
                    NavigationLink("Link \(tag)", destination: DetailView(name: "View \(tag)"), tag: tag, selection: self.$selectionIndex)
                        .foregroundColor((self.selectionIndex ?? 0) == tag ? Color.red : Color.black)
                }
            }
        }
    }
}

struct DetailView: View {
    var name: String
    var body: some View {
        Text(self.name)
    }
}

按下鏈接可以完美地工作,它也會改變 DetailView。 我嘗試突出顯示選定的按鈕,因此我保存了 selectionIndex。

不幸的是 selectionIndex 有時會重置為 0。我做錯了什么?

編輯

NavigationLink包裝到List中可以更好地顯示問題,因為 List 有自己的選擇(此選擇保留,但我自己的var selectionIndex重置)。

        NavigationView {
            List {
                ForEach(0..<5) { tag in
                    NavigationLink("Link \(tag)", destination: DetailView(name: "View \(tag)"), tag: tag, selection: self.$selectionIndex)
                        .foregroundColor((self.selectionIndex ?? 0) == tag ? Color.red : Color.black)
                }
            }
        }

看到這個屏幕:

在此處輸入圖像描述

好吧,這當然看起來像一個錯誤,但他們做了他們記錄的事情 - 顯示所選標簽的目的地,僅此而已。 無論如何,可能值得提交反饋。

這是一個可行的解決方法。 使用 Xcode 11.4 進行測試。

@State var selectionIndex: Int? = nil
@State var highlighted: Int? = nil       // << explicit !!
var body: some View {
    NavigationView {
        VStack {
            ForEach(0..<5) { tag in
                NavigationLink("Link \(tag)", destination:
                    PadDetailView(name: "View \(tag)").onAppear { self.highlighted = tag },
                        tag: tag, selection: self.$selectionIndex)
                    .foregroundColor(self.highlighted == tag ? Color.red : Color.black)
            }
        }
    }
}

暫無
暫無

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

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