- 1

Implementación de MVVM en Swift: Organiza y Optimiza tus Apps
01:53 - 2

Patrones de Arquitectura y Diseño en Desarrollo de Software iOS
10:34 - 3

Arquitectura MVC y MVP en Desarrollo iOS
06:29 - 4

Principios SOLID en Desarrollo de Software
03:56 - 5

Arquitectura MVVM en iOS: Principios Solid y Swift UI
05:59 quiz de Introducción al Patrón MVVM
Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
Clase 19 de 28 • Curso de Patrones MVVM en iOS
Contenido del curso
- 6

Proyecto MVVM en Swift: Buenas Prácticas y Configuración Inicial
07:27 - 7

Modelo de Datos en MVVM: Creación de la Estructura Ítem en XCode
05:41 - 8

Creación de Modelo de Datos con Core Data en Xcode
07:47 - 9

Creación de Vistas en Xcode para Aplicaciones MVVM
06:13 - 10

Creación de View Models con Combine en Swift para Aplicaciones Reactivas
23:12 quiz de Estructura de un Proyecto con MVVM
- 11

Crear función "add todo" en arquitectura MVVM con Core Data
19:48 - 12

Funcionalidades básicas para gestionar tareas en SwiftUI
14:30 - 13

Listar y Detallar Notas en Aplicaciones de Tareas
22:35 - 14

Implementación de Funcionalidad de Edición en Aplicación de Tareas
13:42 - 15

Archivar Todos en Aplicación de Tareas
15:29 - 16

Desarchivar y Restaurar Tareas en Aplicaciones de Notas
03:26 - 17

Eliminar tareas en una aplicación de gestión de pendientes
04:15 - 18

Implementación de Estado de Tarea en Aplicación de Tareas
20:51 - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 quiz de Operaciones CRUD en un proyecto con MVVM
- 20

Implementación de Clean Architecture paso a paso
05:52 - 21

Estructura y Ventajas de la Clean Architecture
03:47 - 22

Estructura de Proyectos con Clean Architecture y The MovieDB API
06:01 - 23

Mapeo de JSON a Objetos Swift para TV Shows Populares
09:11 - 24

Conexión a API y Manejo de Datos en Xcode usando Clean Architecture
30:54 - 25

Casos de Uso en la Capa de Dominio para Aplicaciones de TV
09:35 - 26

Creación de la Capa de Presentación en SwiftUI con MVVM y Clean Architecture
15:38 - 27

Navegación en SwiftUI: Implementación de Detail View y ViewModel
21:54 quiz de Clean Architecture
La funcionalidad de una aplicación debe ir más allá de su operatividad básica para ofrecer una experiencia visualmente atractiva. Crear vistas personalizadas puede resolver el problema de visualizar pantallas que resultan visualmente vacías cuando no tenemos tareas ni archivadas ni no archivadas. Tomemos el ejemplo de crear una nueva vista en SwiftUI llamada NoTodoView para evitar que el fondo quede simplemente en color negro o blanco.
¿Cómo implementamos NoTodoView en SwiftUI?
Primero, diseñamos la estructura para mostrar un mensaje claro que invite a crear nuevas tareas:
import SwiftUI
struct NoTodoView: View {
@Binding var showCreationSheet: Bool
var body: some View {
VStack(spacing: 8) {
Text("No hay tareas aún.")
.font(.title2)
Button(action: {
self.showCreationSheet.toggle()
}) {
Text("Intenta crear una tarea")
.font(.headline)
.foregroundColor(.white)
.padding()
.background(Color.teal)
.cornerRadius(5)
}
}
.offset(y: UIScreen.main.bounds.height * 0.3)
}
}
El VStack nos permite organizar los elementos verticalmente, mientras que el botón está preparado para activar un sheet de creación cuando no hay tareas presentes. La propiedad offset sitúa el contenido en el centro de la pantalla para una mejor visualización.
¿Cómo aplicamos validaciones de visualización?
Este no todos view debe integrarse en la estructura de nuestra aplicación. Hazlo donde inicialmente la aplicación no mostraba nada si no había listas de tareas. Por ejemplo, dentro de la función de validación del TodoList:
if todos.isEmpty {
NoTodoView(showCreationSheet: $showSheet)
} else {
// Mostrar lista de tareas normal
}
La variable todos representa la lista de tareas; si está vacía, la aplicación presentará NoTodoView. Esto proporciona un flujo visual más coherente y evita que los usuarios se enfrenten a pantallas vacías.
¿Cómo crear una vista para tareas archivadas?
Al igual que implementamos NoTodoView, también podemos diseñar un NoArchivedView para la sección de tareas archivadas, asegurando así que todas partes de nuestra aplicación brindan una experiencia de usuario homogénea.
¿Qué es NoArchivedView y cómo se implementa?
Este es un ejemplo de cómo estructuramos la vista para los archivos sin contenido:
import SwiftUI
struct NoArchivedView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
VStack(spacing: 8) {
Text("No existen notas archivadas.")
.font(.title2)
Button(action: {
dismiss()
}) {
Text("Ver todas las notas")
.font(.headline)
.foregroundColor(.white)
.padding()
.background(Color.teal)
.cornerRadius(5)
}
}
.frame(maxWidth: 200)
.offset(y: UIScreen.main.bounds.height * 0.35)
}
}
Aquí usamos un Environment para permitir que la vista se cierre cuando no hay notas archivadas, y el botón nos dirige a visualizar todas las notas disponibles, mejorando la navegabilidad dentro de la aplicación.
¿Cómo implementar una arquitectura MVVM en una aplicación?
Para el desarrollo de la aplicación hicimos uso del patrón modelo-vista-vista-modelo (MVVM), que proporciona una organización clara y facilita el mantenimiento a largo plazo. Separamos responsabilidades en tres capas clave:
-
Modelo (Model): Define los datos que maneja la aplicación. Por ejemplo, el objeto
Itemque representa tareas con su id, título, descripción, fechas, y estados de archivo o completado. -
Vista de Modelo (ViewModel): Actúa como intermediario entre la vista y el modelo, manejando la lógica de negocio. Usa
ObservableObjectpara que las vistas se actualicen automáticamente. Esta mediación es crucial para que cualquier cambio en los datos refleje inmediatamente en la interfaz de usuario. -
Vista (View): Presenta la interfaz al usuario basándose en la lógica proporcionada por el ViewModel, asegurando que las acciones del usuario se traduzcan apropiadamente en cambios de estado o de interfaz.
La arquitectura MVVM se enfoca principalmente en la presentación, manteniendo el código organizado y separando las preocupaciones, lo cual facilita la escalabilidad y el mantenimiento. Sin embargo, no es la única ni necesariamente la mejor opción organizativa, ya que futuras implementaciones podrían requerir estructuras más complejas que se adapten mejor a necesidades específicas.
¡A seguir aprendiendo y construyendo aplicaciones más eficientes y atractivas!