Я хочу программно выбрать конкретный c NavigationLink
в NavigationView
/ List
.
Следующий код отлично работает на iPhone как в портретном, так и в ландшафтном режиме == в ситуациях, когда Список не отображается постоянно, кроме его целевого вида.
введите описание изображения здесь
Код:
struct ContentView: View {
private let listItems = [ListItem(), ListItem(), ListItem()]
@State var selection: Int? = 0
var body: some View {
NavigationView {
List(listItems.indices) {
index in
let item = listItems[index]
let isSelected = (selection ?? -1) == index
NavigationLink(destination: Text("Destination \(index)"),
tag: index,
selection: $selection) {
Text("\(item.name) \(index) \(isSelected ? "selected" : "")")
}
}
}
.listStyle(SidebarListStyle())
.onAppear(perform: {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
selection = 2
})
})
}
}
struct ListItem: Identifiable {
var id = UUID()
var name: String = "Some Item"
}
Но он не работает на iPad в ландшафтном режиме: хотя сама навигация работает (пункт назначения отображается правильно), NavigationLink
остается невыделенным .
→ Как выбрать ссылку NavigationLink так, чтобы она отображалась выбранной и на iPad?