Estaba trabajando en una aplicación con inicio de sesión y después de iniciar sesión hay una lista de categorías. Y debajo de cada categoría hay algunos elementos enumerados horizontalmente. El problema es que después de iniciar sesión, aparece la página principal y todo aparece excelente. Cuando haces clic en un elemento, se dirige a la pantalla detallada, pero cuando intentas retroceder, simplemente se bloquea. Encontré este flujo ¿Por qué mi aplicación SwiftUI se bloquea al navegar hacia atrás después de colocar un `NavigationLink` dentro de un` navigationBarItems` en un `NavigationView`? Pero no pude resolver mi problema. Como mi proyecto se volvió complicado, solo quería practicar la navegación en swiftui y creé un nuevo proyecto. Por cierto, descargué la última versión de xcode 11.3. Escribí un código simple de la siguiente manera:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
Y la vista Test () es la siguiente:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Como puede ver, es realmente simple. También probé ejemplos similares en Internet, pero no funciona como se supone que funciona. Cuando ejecuto el proyecto, hago clic en el enlace de navegación y navega a la vista Prueba (). Luego hago clic en el botón Atrás y navega a la página principal. Sin embargo, cuando hago clic en el enlace de navegación por segunda vez, no sucede nada. El enlace de navegación funciona solo una vez y después de eso no pasa nada. No navega, no arroja ningún error. Soy nuevo en Swiftui y todo es genial, excepto la navegación. Probé muchos ejemplos y sugerí soluciones en Internet, pero nada parece solucionar mis problemas.
fuente
Respuestas:
[ACTUALIZACIÓN] 12 de febrero de 2020: verifiqué este problema en Xcode 11.4 beta y descubrí que este problema se ha resuelto.
También estaba teniendo el mismo problema en mi proyecto, cuando lo estaba probando en el simulador de Xcode. Sin embargo, cuando lancé la aplicación en un dispositivo real (iPhone X con iOS 13.3),
NavigationLink
funcionaba totalmente bien. Entonces, realmente parece el error de Xcode.fuente
Simulador 11.4: este problema se ha solucionado
Debe restablecer el
isActive
valor predeterminado en la segunda vista. Funciona en dispositivos y emuladores.fuente
onDisappear
se llamará despuésisActive
es falso para que NavigationView no funcione correctamente. Es una solución temporal para emuladores solo porque NavigationView funciona correctamente en dispositivos. En versiones anteriores de emuladores, NavigationView funcionó, espero que se solucione en un emulador futuro.Presumiblemente, esto se resolverá cuando Apple corrija el error relacionado que impide que 13.3 pueda seleccionarse como objetivo de implementación .
Estoy experimentando el mismo problema que todos los demás. Este problema está presente en el simulador y en la vista previa que se ejecuta en 13.2, pero se soluciona cuando se implementa en mi propio dispositivo con 13.3.
fuente
Como @ Александр Грабовский dijo que parece un error de Xcode 11.3, me encuentro con el mismo problema, debe degradar o usar una solución alternativa como el botón de retroceso personalizado como se muestra a continuación
fuente