Perilaku NavigationLink yang aneh di iPad
Di aplikasi saya, saya memiliki Scrollview berisi NavigationLinks yang disematkan di NavigationView. Di iPad, menekan NavigationLinks menyebabkan sesuatu yang aneh terjadi. Pertama kali salah satu item ditekan, ini berfungsi dengan baik, dan menunjukkan tampilan detail. Penekanan berikutnya pada item lain tidak melakukan apa pun atau menunjukkan tampilan detail dari item yang ditekan sebelumnya. Terkadang ini akan berfungsi untuk beberapa item berturut-turut, tetapi kemudian macet lagi.
Sepertinya ada masalah dengan tumpukan navigasi?
Contoh yang disederhanakan ini menunjukkan kesalahan pada iPad pro 11 "yang menjalankan iOS 13.7
struct ContentView: View {
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
NavigationLink(destination: Text("\(index)")) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
}
}
}
Jawaban
Ya, sepertinya bug. Anda dapat mengajukan umpan balik ke Apple.
Sementara itu, berikut adalah solusi yang mungkin. Diuji dengan Xcode 11.7 / iOS 13.7
struct ContentView: View {
@State private var selection = -1
@State private var isActive = false
var body: some View {
NavigationView {
ScrollView {
ForEach(0..<20) { index in
Button(action: {
self.selection = index
self.isActive = true
} ) {
Text("\(index)")
.padding()
.frame(width: 100, height: 100)
.background(Color.green)
}
}
}
.background(NavigationLink(destination: Text("\(selection)"),
isActive: $isActive) { EmptyView() })
}
}
}