SwiftUI ver diseño de contenido inesperadamente pop / salta aparece?

16

Al navegar a una nueva vista con un formulario o una lista (agrupada), el contenido aparece aproximadamente un cuarto del camino desde la parte inferior del título de la vista de navegación, luego "aparece" en la ubicación correcta aproximadamente medio segundo después. Muy feo. ¿No está seguro de si se trata de un error de SwiftUI o si estoy estructurando algo incorrectamente?

He probado esto tanto en el simulador como en el dispositivo con los mismos resultados.

¿Estoy pensando que tiene algo que ver con la forma en que se manejan los enlaces de navegación? Cada enlace de navegación llama a init () en su vista de destino cuando aparece ContentView. Para mí esto no tiene sentido, ¿no debería llamarse el init init () en el momento en que un usuario hace clic en el enlace de navegación?

También probé esto con una hoja y el problema no existe con las hojas, solo cuando utilizo enlaces de navegación con formularios o listas con estilos agrupados.

Código de una nueva aplicación de vista única:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}
SybrSyn
fuente

Respuestas:

10

Proporcionar una sección con un texto de encabezado soluciona el problema, incluso si el texto está en blanco. Aunque esto dejará un espacio entre el título de navegación y la primera fila.

Funciona con formularios y listas con estilos agrupados.

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}
SybrSyn
fuente
1
Intenté ambas soluciones en esta publicación, aún sucediendo. ¿Qué más podría estar pasando? Tan extraño.
Lkabo
0

Tuve este problema con una lista que se introdujo a través de NavigationLink desde una lista GroupedListStyle. Cuando haces eso, parece que SwiftUI también considera la Lista empujada como agrupada. Simplemente restablecer listStyle debería funcionar en este caso:

List { ... }.listStyle(DefaultListStyle())
retendo
fuente