У меня есть следующий код для моего 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. Что я делаю не так?
EDIT
Включение NavigationLink
в List
показывает проблему c лучше, поскольку у 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)
}
}
}
Смотрите этот экран: