es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El modificador onAppear se llama dos veces al aplicar .navigationViewStyle(.stack) en NavigationView.

[Resuma el problema]

El modificador .onAppear se llama dos veces al usar .navigationViewStyle(.stack) en NavigationView.

[Describa los resultados esperados y reales]

Espero que .onAppear se llame una vez, pero se llama dos veces.

EDITAR: He eliminado el enlace al proyecto y he añadido un código de plantilla mucho más simple que muestra el problema.

import SwiftUI

struct RootView: View {

    @State private var showDestinationView = false

    var body: some View {
        NavigationView {
            LeftView()

            NavigationView {
                NavigationLink(isActive: $showDestinationView) {
                    DestinationView()
                } label: {
                    Button("Mostrar Destino") {
                        print("didPressButton")
                        showDestinationView = true
                    }
                }
            }
            .navigationBarTitle("Título")
            .navigationViewStyle(.stack) // Sin esta línea, onAppear se llama una vez.
        }
    }
}

struct DestinationView: View {
    var body: some View {
        Text("Vista Destino")
            .onAppear {
                print("onAppear")
            }
    }
}

struct LeftView: View {
    var body: some View {
        VStack {
            Spacer()

            Text("Izquierda")

            Spacer()
        }
    }
}

Y aquí están los registros:

didPressButton
onAppear
onAppear
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El modificador .onAppear se está llamando dos veces en lugar de una cuando se utiliza .navigationViewStyle(.stack) en NavigationView. El resultado esperado es que .onAppear se llame solo una vez.

Comments are closed.