Comportement étrange de NavigationLink sur iPad
Dans mon application, j'ai un Scrollview contenant des NavigationLinks incorporés dans un NavigationView. Sur l'iPad, appuyer sur NavigationLinks provoque quelque chose de bizarre. La première fois que l'un des éléments est pressé, cela fonctionne parfaitement bien et affiche la vue détaillée. Toute pression ultérieure sur d'autres éléments ne fait rien ou affiche la vue détaillée d'un élément précédemment appuyé. Parfois, cela fonctionnera pour quelques éléments d'affilée, mais se fige à nouveau.
Cela semble être un problème avec la pile de navigation?
Cet exemple simplifié montre l'erreur sur un iPad pro de 11 pouces exécutant 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)
}
}
}
}
}
}
Réponses
Oui, cela ressemble à un bug. Vous pouvez envoyer des commentaires à Apple.
En attendant, voici une solution de contournement possible. Testé avec 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() })
}
}
}