Introducci贸n al Patr贸n MVVM
Todo para Uno y Uno para Todos
Arquitectura y Dise帽o en Apps iOS
Patrones MVC y MVP en Apps iOS
Principios SOLID
Patr贸n de arquitectura MVVM
Quiz: Introducci贸n al Patr贸n MVVM
Estructura de un Proyecto con MVVM
Inicio del proyecto y estructura b谩sica MVVM
Paquete Models
Core Data
Paquete Views
ViewModel
Quiz: Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
Agregar ToDos (Parte 1)
Agregar ToDos (Parte 2)
Listar ToDos
Actualizar ToDos
Archivar ToDos
Desarchivar ToDos
Eliminar ToDos
Actualizar el estado de los ToDos
Dise帽o y Validaci贸n de Vistas para ToDos
Quiz: Operaciones CRUD en un proyecto con MVVM
Clean Architecture
Introducci贸n a Clean Architecture
Estructura de Clean Architecture
Inicio del proyecto con Clean Architecture
Capa de Datos
Comunicaci贸n de red HTTP con TheMovieDB
Capa de Dominio
Capa de Presentaci贸n
Integraci贸n de Capas
Quiz: Clean Architecture
MVVM y Clean Architecture
Highlights
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
La evoluci贸n de nuestras aplicaciones implica ir dot谩ndolas de nuevas funcionalidades para mejorar la experiencia del usuario. En este caso, nos enfocaremos en la funcionalidad de editar los elementos de nuestras listas de tareas.
Al revisar nuestras listas de tareas, puede que hayas notado que todas tienen la misma hora de creaci贸n. Esto se debe a que inicialmente se estaba usando un valor por defecto para la hora. Para corregirlo, se debe modificar el archivo todo_item_view
usando la propiedad todo.date
, garantizando as铆 que cada tarea muestre su fecha de creaci贸n correcta.
// C贸digo de ejemplo para ajustar la fecha
var body: some View {
// Otros elementos del listado
Text("\(todo.date, formatter: itemFormatter)")
}
Para permitir la edici贸n, necesitamos manipular una variable que controla la visualizaci贸n de una pantalla de creaci贸n. En todo_preview_view
, debemos asegurarnos de que al presionar el bot贸n de "Editar", la variable showItToDoCreationSheet
sea verdadera. Esto abrir谩 un overlay
de edici贸n.
// Cambio de estado al hacer clic en el bot贸n "Editar"
Button("Editar") {
self.showItToDoCreationSheet = true
}
La reutilizaci贸n es clave en el desarrollo eficiente de software. Para editar tareas, reutilizaremos la vista que ya usamos para agregar nuevas tareas. Esta vista necesita recibir par谩metros adecuados, controlando si debe mostrar contenido para a帽adir o editar.
// Uso de la vista de adici贸n para edici贸n
ToDoSheet(isShowing: $showItToDoCreationSheet) {
ToDoAddView(todo: self.selectedTodo)
}
La funci贸n onAppear
es crucial para manejar el estado de nuestras vistas. Al cargar una vista, podemos decidir si mostrar los datos existentes o dejar los campos vac铆os si se est谩 creando una nueva tarea. Esto se logra comprobando si el objeto todo
tiene alg煤n valor.
// Ejecuci贸n al inicializar la vista
.onAppear {
if let todo = todo {
title = todo.title ?? ""
note = todo.note ?? ""
date = todo.date ?? Date()
}
}
El modelo de vista (viewModel
) juega un papel esencial en el manejo de datos. Se debe crear una funci贸n updateToDo
que permita la actualizaci贸n de una tarea espec铆fica. Esta funci贸n verificar谩 si la tarea existe, y de ser as铆, actualiza sus propiedades.
// Funci贸n para actualizar una tarea
func updateToDo(todo: ToDo, newTitle: String, note: String, date: Date) {
if let index = todos.firstIndex(where: { $0.id == todo.id }) {
todos[index].title = newTitle
todos[index].note = note
todos[index].date = date
}
saveData()
}
Al realizar una edici贸n desde la interfaz, actualizamos el viewModel
con los nuevos datos introducidos por el usuario. Es esencial asegurarnos de que al presionar el bot贸n de "Guardar", se invoque la funci贸n correcta para persistir estos cambios.
// Bot贸n para guardar cambios
Button("Guardar") {
viewModel.updateToDo(
todo: todo,
newTitle: title,
note: note,
date: date
)
}
Mientras contin煤as explorando el desarrollo de aplicaciones, recuerda que la clave est谩 en la reutilizaci贸n inteligente del c贸digo y en el foco en mejorar la experiencia del usuario. Cada mejora es un paso hacia una aplicaci贸n m谩s robusta y eficiente. 隆Sigue aprendiendo y experimentando!
Aportes 0
Preguntas 0
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?