Comportamento estranho do NavigationLink no iPad
Em meu aplicativo, tenho um Scrollview contendo NavigationLinks incorporado em um NavigationView. No iPad, pressionar NavigationLinks faz com que algo estranho aconteça. A primeira vez que um dos itens é pressionado, funciona perfeitamente bem e mostra a visualização de detalhes. Qualquer pressionamento subsequente em outros itens não faz nada ou mostra a exibição de detalhes de um item pressionado anteriormente. Às vezes funciona para alguns itens seguidos, mas congela novamente.
Parece um problema com a pilha de navegação?
Este exemplo simplificado mostra o erro em um iPad pro de 11 "executando 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)
}
}
}
}
}
}
Respostas
Sim, parece um bug. Você pode enviar comentários para a Apple.
Enquanto isso, aqui está uma solução possível. Testado com 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() })
}
}
}