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