- 1

Creación de Apps Modernas con SwiftUI
01:30 - 2

Desarrollo de Aplicaciones con Swift UI y Xcode
04:06 - 3

Uso de Modifiers en SwiftUI para Personalizar Vistas
09:02 - 4

Dibujo y Personalización de Íconos e Imágenes en Xcode
06:26 - 5

Creación de Layouts Complejos con Stacks en SwiftUI
09:14 - 6

Scroll View y Stacks: Creación de Listas y Carruseles en SwiftUI
06:31 - 7

Listas nativas y optimización de memoria en SwiftUI
07:05 - 8

Buenas prácticas en SwiftUI: Creación y organización de vistas y modelos
09:07 quiz de Fundamentos de SwiftUI y desarrollo de Interfaces
Refactorización de Formularios con ViewModel en Swift
Clase 17 de 23 • Curso de Desarrollo de Aplicaciones con SwiftUI
Contenido del curso
- 9

Creación y Funcionalidad de Botones en SwiftUI
05:00 - 10

Uso de Text Field y Text Editor con Validaciones en SwiftUI
08:41 - 11

Uso de Pickers en SwiftUI para Selección de Fechas y Opciones
08:56 - 12

Implementación de Sliders y Toggles en SwiftUI
05:40 - 13

Formulario de Notas en SwiftUI: Creación y Personalización
09:52 - 14

Creación y Uso de Alertas y Sheets en SwiftUI
08:49 - 15

Gestos en SwiftUI: Tap, Long Press y Drag en Xcode
04:51 - 16
Animaciones y Transiciones en SwiftUI con ProgressView
04:35 quiz de Interacción del Usuario y Componentes de Entrada
Un View Model nos ayuda a separar la lógica de negocios de la vista. Esto resultará en un código más fácil de manejar y organizado. Empezaremos creando una estructura adecuada para nuestra aplicación.
¿Cómo estructurar el proyecto?
Primero que nada, debemos organizar nuestro proyecto adecuadamente. Sigamos los pasos:
- Crear carpeta: comienza creando una nueva carpeta dentro de
viewsllamadaNCreateNote. - Mover archivos: mueve
NCreateNoteViewa esta nueva carpeta. - Crear un View Model: dentro de la carpeta, crea un archivo Swift llamado
NCreateNoteViewModel.
Con esta estructura, garantizamos que cada componente de nuestra aplicación tenga su propio espacio y responsabilidad, lo cual simplifica el mantenimiento del proyecto.
¿Cómo crear un View Model?
El siguiente paso es crear y configurar nuestro View Model:
-
Definición de la clase: añadimos una clase llamada
NCreateViewModelque será de tipoObservableObject.class NCreateViewModel: ObservableObject { @Published var title: String = "" @Published var text: String = "" @Published var size: String = "Pequeño" @Published var isFavorite: Bool = false } -
Uso de
@Published: Cambiamos nuestros estados a variables@Publishedpara que la vista observe automáticamente cualquier cambio en ellas. -
Función
createNote: Creamos una función que generará la nota a partir de estos valores.func createNote() -> NCard { return NCard(title: title, text: text, size: size, isFavorite: isFavorite) }
Esta práctica nos ayuda a mantener todas nuestras variables y lógica de creación de una nota en un solo lugar, alejadas de la vista.
¿Cómo integrar el View Model con la vista?
Ahora integremos el View Model con la vista existente:
-
Sustituye los estados locales: reemplaza los estados locales en
nCreateNoteViewpor la instancia del View Model.@StateObject private var viewModel = NCreateViewModel() -
Actualizar referencias: asegúrate de que en toda la vista, las referencias sean a través del
viewModel.var body: some View { TextField("Título", text: $viewModel.title) // Continúa con las otras propiedades... } -
Utilizar función desde el View Model: cambia la creación del card para que lo haga mediante
viewModel.createNote().
Con estos cambios, el código del formulario se ve más limpio y mantiene una clara separación entre la lógica de negocio y la interfaz de usuario.
¿Por qué usar @StateObject?
Finalmente, es importante entender por qué se utiliza @StateObject y no @State. Cuando se observa un conjunto de datos o un modelo más complejo, se necesita @StateObject. Esto es crucial para administrar la vida útil del objeto y garantizar que la vista tenga acceso a datos reactivos y bien manejados a medida que cambian.
Aprovechando este proceso de refactorización, incorporamos mejoras como isFavorite al modelo NCard, permitiendo mayor flexibilidad y capacidad para futuras actualizaciones.
Prueba de funcionalidad
Al probar el formulario, deberías ver que, al guardar una nota, el print en la consola mostrará los elementos del NCard correctamente reflejados con atributos como isFavorite. Esta refactorización refuerza un enfoque modular y mantenible, esencial para el desarrollo profesional en Swift.
¡Continúa aprendiendo y aplicando buenas prácticas en tus futuros desarrollos!