Del curso: Domina SwiftUI
Qué es una propiedad @Binding en SwiftUI - Tutorial de SwiftUI
Del curso: Domina SwiftUI
Qué es una propiedad @Binding en SwiftUI
¿Cuándo declarar una propiedad como Binding? Vemos un ejemplo de una vista que necesita que su propiedad sea declarada como Binding. Y vamos a entender por qué. Este wrapper permite crear una conexión bidireccional entre dos vistas, lo que permite que cualquier cambio en el valor de la propiedad se refleje automáticamente en ambas vistas. Nuestro ejemplo es un picker de colores. Tenemos un gradiente y en un texto el número de colores seleccionados. Abajo queremos usar una vista, que es PickerDeColores, para seleccionar los colores que se van a ir viendo en el gradiente. Vamos a ver PickerDeColores. Tenemos un array de colores disponibles y un array de colores seleccionados. Nuestro picker tiene esta pinta. Vamos a ir seleccionando los colores que se van a ir añadiendo a nuestra lista de colores que se van a visualizar después en ContentView. Vemos que nuestros coloresSeleccionados es una variable de estado. Volvemos a ContentView y vamos a usar PickerDeColores. Vamos a pasar el array de colores. Aparentemente todo está bien. Tenemos dos colores seleccionados. Parece que el gradiente va de rojo a amarillo. Y en el PickerDeColores tenemos un 1 en rojo y un 1 en amarillo. Pero si seleccionamos más colores, la vista padre no reacciona, seguimos teniendo dos colores seleccionados y el gradiente sigue igual. Queremos que la parte de ContentView reaccione a los cambios del picker. Para conseguir esto, tenemos que indicar que colores en nuestro picker es un wrapper Binding. Para usar la preview con una propiedad Binding, podemos usar .constant y pasarle un array de ejemplo de colores. Ya hemos quitado este error y ahora vamos a ver qué debemos hacer en ContentView. Para pasarle el array de colores a PickerDeColores, tenemos que hacerlo con el símbolo dólar. Yo, además, voy a añadir un botón para borrar el array gradientColors.removeAll, y ahora, con el array de colores en ContentView siendo un wraper State y, dentro de PickerDeColores, tenemos un Binding para los colores. Vamos a probar nuestro picker en la preview. Esto es exactamente para lo que sirve Binding. Nos permite crear una propiedad en la vista PickerDeColores que dice: «Este valor se proporcionará desde otro lugar y se compartirá entre nosotros y ese otro lugar». Es especialmente útil cuando deseas que un componente hijo actualice el estado de un componente padre en respuesta a acciones realizadas por el usuario en este componente hijo, igual que hemos hecho en nuestro picker.
Practica mientras aprendes con los archivos de ejercicios.
Descarga los archivos que el instructor utiliza para enseñar el curso. Sigue las instrucciones y aprende viendo, escuchando y practicando.
Contenido
-
-
-
-
(Bloqueado)
Utilizando el elemento Spacer()3 min 35 s
-
(Bloqueado)
Cómo formatear un texto dentro de un Text()5 min 17 s
-
(Bloqueado)
Cómo añadir una imagen diferente según el esquema de color (dark/light)3 min 40 s
-
Cómo adaptar el tamaño de una imagen en SwiftUI4 min 22 s
-
(Bloqueado)
Cómo cargar una imagen de una URL1 min 56 s
-
(Bloqueado)
Cómo añadir una lista de elementos4 min 2 s
-
(Bloqueado)
Cómo extraer una vista para refactorizar código1 min 42 s
-
(Bloqueado)
Cómo hacer vistas que reciban parámetros2 min 7 s
-
(Bloqueado)
Añadir padding a un elemento2 min 15 s
-
(Bloqueado)
Formas disponibles en SwiftUI3 min 22 s
-
(Bloqueado)
Cómo añadir y usar los colores5 min 9 s
-
(Bloqueado)
Atención al orden de los modificadores3 min 49 s
-
(Bloqueado)
Cambiar el estado de una vista usando un botón1 min 59 s
-
(Bloqueado)
Cómo crear un botón con estilo, texto e icono2 min 23 s
-
Qué es una propiedad @Binding en SwiftUI3 min 35 s
-
(Bloqueado)
Cómo poblar una lista por categorías3 min 38 s
-
(Bloqueado)
Cómo crear una lista con varias columnas4 min 40 s
-
(Bloqueado)
Cómo crear visualmente una tabla para que se visualice en iPhone4 min 11 s
-
(Bloqueado)
Usando los gestos en SwiftUI6 min 18 s
-
(Bloqueado)
¿Y sí hay un cambio en los datos de un modelo?4 min 48 s
-
(Bloqueado)
Datos compartidos entre vistas con @EnvironmentObject5 min 38 s
-
(Bloqueado)
@Environment vs @EnvironmentObject4 min 25 s
-
(Bloqueado)
Cómo mostrar un texto junto a un icono gracias al elemento Label3 min 24 s
-
Cómo crear un interruptor switch3 min 57 s
-
(Bloqueado)
Cómo crear un estilo propio para un botón3 min
-
(Bloqueado)
Usar un picker y acceder al valor seleccionado6 min 21 s
-
(Bloqueado)
Cómo hacer un picker de fechas en SwiftUI4 min 10 s
-
(Bloqueado)
Contraseñas con campos de texto seguros2 min 2 s
-
(Bloqueado)
Un campo de texto que solo reciba números6 min 26 s
-
(Bloqueado)
Añadir los mismos modificadores a un grupo de elementos2 min 36 s
-
(Bloqueado)