Comportamiento extraño de NavigationLink en iPad
En mi aplicación, tengo un Scrollview que contiene NavigationLinks incrustado en un NavigationView. En el iPad, presionar NavigationLinks hace que suceda algo extraño. La primera vez que se presiona uno de los elementos, funciona perfectamente bien y muestra la vista detallada. Cualquier pulsación posterior sobre otros elementos no hace nada o muestra la vista detallada de un elemento previamente pulsado. A veces, funcionará para algunos elementos seguidos, pero luego se congela nuevamente.
¿Parece un problema con la pila de navegación?
Este ejemplo simplificado muestra el error en un iPad pro de 11 "con 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)
}
}
}
}
}
}
Respuestas
Sí, parece un error. Puede enviar comentarios a Apple.
Mientras tanto, aquí hay una posible solución. Probado con 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() })
}
}
}