SwiftUI visualizar o layout do conteúdo inesperadamente pop / saltos em aparecer?

16

Ao navegar para uma nova visualização com um formulário ou lista (agrupado), o conteúdo aparece cerca de um quarto da parte inferior do título da visualização de navegação e, em seguida, "aparece" no local correto cerca de meio segundo depois. Muito feio. Não tenho certeza se este é um bug do SwiftUI ou estou estruturando algo incorretamente?

Eu testei isso no simulador e no dispositivo com os mesmos resultados.

Estou pensando que tem algo a ver com a maneira como os links de navegação são tratados? Todo link de navegação chama o init () na visualização de destino quando o ContentView aparece. Para mim, isso não faz sentido, o destino init () não deve ser chamado apenas no momento em que um usuário realmente clica no link de navegação?

Tentei isso com uma planilha também e o problema não existe com planilhas, apenas ao usar links de navegação com formulários ou listas estilizadas como agrupadas.

Código de um novo aplicativo de visualização ú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
fonte

Respostas:

10

Fornecer uma seção com um texto de cabeçalho corrige o problema, mesmo que o texto esteja em branco. Embora isso deixe um espaço entre o título da navegação e a primeira linha.

Funciona com formulários e listas estilizados como agrupados.

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}
SybrSyn
fonte
11
Tentei as duas soluções neste post, ainda acontecendo. O que mais poderia estar acontecendo? Tão estranho.
Lkabo 15/01
0

Eu tive esse problema com uma lista que foi enviada por meio do NavigationLink de uma lista GroupedListStyle. Quando você faz isso, parece que o SwiftUI também considera a Lista enviada como agrupada. Apenas redefinir o listStyle deve funcionar neste caso:

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