Borrado de Tweets Propios en iOS usando Swipe en UITableView

Clase 31 de 52Curso de Desarrollo de Apps para iOS

Resumen

¿Cómo implementar la funcionalidad de borrar tweets en iOS?

Desarrollar aplicaciones móviles implica comprender no solo cómo crear interfaces visuales, sino también cómo enriquecerlas con funcionalidades interactivas que respondan a las acciones del usuario. Imagina tener una app donde puedes gestionar tus tweets directamente desde una lista, borrándolos con un simple gesto. Vamos a explorar cómo lograrlo utilizando las funcionalidades nativas de iOS.

¿Cómo configurar el swipe para borrar tweets?

La idea es permitir que el usuario pueda deslizar una celda en la tabla para que aparezca una opción de borrar. Esto se logra implementando un UITableViewDelegate, algo esencial en el desarrollo iOS que ofrece métodos como editActionsForRowAt.

tableView.delegate = self

Al adoptar este enfoque, usaremos la acción de swipe como una manera intuitiva para interactuar con los tweets.

¿Cómo se define la acción de borrar?

Primero, definimos la acción dentro del método editActionsForRowAt. Esta acción estará configurada para que el usuario pueda eliminar el tweet:

let deleteAction = UITableViewRowAction(style: .destructive, title: "Borrar") { (action, indexPath) in
    // Acción para borrar el tweet
}
return [deleteAction]

El estilo es crucial aquí. La opción de .destructive le da ese color rojo que inmediatamente le indica al usuario que dicha acción será irreversible.

¿Cómo implementamos el borrado de tweets?

Al borrar un tweet, debemos considerar dos aspectos: eliminarlo de nuestra fuente de datos y reflejar este cambio en la interfaz de usuario.

private func deletePost(at indexPath: IndexPath) {
    let postId = dataSource[indexPath.row].id
    // Lógica para llamar al servicio que borra el post
    SimpleNetworking.delete(endpoint: endpoint) { result in
        switch result {
        case .success:
            self.dataSource.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .left)
        case .failure(let error):
            print("Error al borrar: \(error.localizedDescription)")
        }
    }
}

¿Cómo prevenimos el borrado de posts de otros usuarios?

Aquí está el reto: evitar que los usuarios borren tweets que no les pertenecen. Este control se logra en el método canEditRowAt.

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return dataSource[indexPath.row].author.email == userDefaults.email
}

Es importante almacenar el correo del usuario en UserDefaults para poder realizar esta comprobación fácil y rápidamente.

Desafío adicional: manejar el correo del usuario dinamicamente

Se recomienda trabajar con el almacenamiento del correo del usuario de manera dinámica para mejorar la seguridad y la experiencia del usuario en la app. Así, el código no tiene información quemada y responde mejor a los cambios de sesión.

En resumen, nuestra app se vuelve más rica y útil al integrar esta funcionalidad de borrado. Invito a todos a que prueben implementar estos métodos en sus propias aplicaciones, logrando un control más seguro y eficiente de la gestión de posts. No solo es un gran ejemplo de cómo las pequeñas acciones pueden mejorar la experiencia del usuario, sino también de cómo manejamos la lógica de la app para que sea lo más robusta posible.