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.

¿Existe alguna forma de actualizar el NavigationTitle de un NavigationView desde un botón en su vista de detalle?

Tengo una NavigationView que muestra un título con el número de registros en una lista:

.navigationTitle(“(navBarTitle) ((String(numberOfRecords)))”)

En la barra de herramientas tengo 2 botones:

mostrar no leídos – mostrar solo los no leídos / mostrar todos
mostrar favoritos – mostrar solo favoritos / mostrar todos

La vista de lista muestra todos los registros, registros no leídos o registros favoritos. Cambiar entre vistas usando los botones funciona bien y actualiza la variable numberOfRecords en el título de navegación.

Hasta aquí todo va bien. Ahora…

Las filas en la lista tienen un NavigationLink que lleva a una vista de detalle:

NavigationLink(destination: detailView(record: record))

En la vista de detalle tengo un botón: hacer favorito. Hago clic en el botón, pero cuando vuelvo a la vista de lista, la variable numberOfRecords en el título de navegación no se actualiza.

¿Cómo puedo actualizar el título de navegación desde su vista de detalle?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para actualizar el título de navegación desde su vista de detalle, puede utilizar una variable @State para rastrear el número de registros. Al hacer clic en el botón, puede actualizar la variable @State y el título de navegación se actualizará en consecuencia.

    Por ejemplo, puede declarar una variable @State en la vista de lista:

    @State var numberOfRecords: Int = 0
    

    Luego, en la vista de detalle, puede actualizar la variable @State cuando se hace clic en el botón:

    Button(action: {
        // Actualizar la variable numberOfRecords
        self.numberOfRecords += 1
    }) {
        Text("Hacer tarjeta favorita")
    }
    

    Finalmente, puede utilizar la variable @State en el título de navegación:

    .navigationTitle("\(tituloBarraNavegacion) (\(String(numberOfRecords)))")
    

Comments are closed.