Considere el siguiente código de vista:
struct ContentView: View { @State var activeLink: Int? = 45 var body: some View { NavigationView { VStack { Text("Hello, world!") .padding() List(0..<100, id: \.self) { i in NavigationLink( tag: i, selection: $activeLink, destination: { MyNextView() } ) { Text("Row nr \(i)") } } } } } } Si el valor de activeLink es el mismo que la etiqueta de un NavigationLink que está actualmente visible en la interfaz de usuario, el NavigationLink se activará y MyNextView se presentará como se esperaba. Sin embargo, si activeLink tiene un valor igual a una etiqueta de NavigationLink fuera de la interfaz de usuario visible, no sucede nada. Esto se convirtió en un problema en mi proyecto ya que tengo un ObservableObject que representa un modelo de "estado de enrutamiento" en mi aplicación que contiene el valor de cada NavigationLink activo en la jerarquía de vistas. La razón de esto es que quiero poder recrear una jerarquía de vista al inicio de la aplicación. Sin embargo, si mi estado de enrutamiento quiere activar un enlace de navegación fuera de la interfaz de usuario visible, como en el ejemplo anterior, no funciona.
He intentado desplazarme por la lista hasta el elemento NavigationLink que quiero activar para que aparezca, pero no he encontrado una forma sencilla de hacerlo. Intenté usar ScrollViewProxy.scrollTo(... en .onAppear(perform: ... de mi vista, pero no funciona sin DispatchQueue.main.asyncAfter(deadline: ... que parece muy poco confiable en mi opinión).
¿Alguien más se ha encontrado con este problema?