2010-07-15 11 views
8

Esto es realmente más una curiosidad que una cuestión de codificación difícil.UITableViewCell Deslizar para cajón

Tanto Facebook como Twitter tienen una función en la que deslizar una UITableViewCell anima la celda lateral para revelar un cajón con más controles debajo. ¿Cómo se logra algo así?

Respuesta

6

Aquí es un gran método de código abierto para hacer exactamente esto, basado en el comportamiento de la aplicación de Twitter:

https://github.com/thermogl/TISwipeableTableView

+0

¡Funciona para mí! :) – AWrightIV

+0

Bueno, casi _ trabajó para mí. Desafortunadamente, ese proyecto usa métodos obsoletos para dibujar. Estoy en progreso en una implementación moderna, así que tal vez publique algo cuando esté satisfecho. – AWrightIV

+0

También encontrará un ejemplo sobre cómo detectar gestos de deslizamiento en una UITableView en nuestro blog http://blog.blackwhale.at/?p=795 – anka

1

Puede implementar -tableView:willBeginEditingRowAtIndexPath: en su delegado de la vista de tabla.

From the doc,

Este método se llama cuando el usuario pasa horizontalmente a través de una fila; ... Este método le da al delegado la oportunidad de ajustar la interfaz de usuario de la aplicación al modo de edición.

+0

¿Este método tampoco agrega automáticamente un botón de borrar? No creo que DVG quiera eso, y sé que no. – AWrightIV

+0

Automáticamente hace lo que le proporcione en el delegado para el método 'tableView: (UITableView *) tableView editingStyleForRowAtIndexPath: (NSIndexPath *) indexPath' – superhawk610

+1

Así que si devuelve' UITableViewCellEditingStyleNone' a ese método, no realizará ninguna acción automática, permitiéndote hacer lo que quieras :) – superhawk610

3

2 maneras para detectar la acción swipt

  1. vistazo al método de UITableViewCell willTransitionToState:. este método se invocará cuando deslice el dedo hacia la celda.

  2. Custom swipe detection in a TableViewCell

y luego se puede cambiar la vista de células fácilmente.

+0

La detección de barrido es la parte fácil. Es la animación deslizante y muestra una vista separada que es difícil. – AWrightIV

1

Como UITableViewCell es solo un UIView, puede utilizar este hecho para básicamente hacer lo que quiera con él.

Para resolver su problema, adjuntaría un UISwipeGestureRecognizer para detectar el deslizamiento y luego animar la vista a un estado diferente.

Por ejemplo, puede crear una celda personalizada que tenga su vista de contenido sobre la "vista de acciones". Cada vez que hay un deslizamiento, utiliza una animación UIView para mover la vista de contenido a un lado y mostrar la vista de acción con un par de botones en su lugar. En una UITableViewCell personalizada, puede agregar un protocolo de delegado para que la acción presionada y la celda se envíen al delegado, es decir, su controlador. Allí dispararía lo que sea que haya para disparar y luego la transición de la celda fuera del estado.

+0

¿Pueden existir subvistas fuera de un contentView de UITableViewCell? No pude lograr que este método funcionara. – AWrightIV

+0

Sí, no puede. El botón Eliminar y las vistas de fondo son solo dos ejemplos. –

5

Este es un problema que he intentado un par de diferentes soluciones a. Me gustó mucho el comportamiento de Mailbox (mailboxapp.com). Entonces me propuse lograr esto. Al final terminé con lo que creo que es una solución muy simple: use un UIScrollView dentro de su celular. Tengo el blog post que analiza y un sample app que demuestra este comportamiento.

+0

Esto suena ingeniosamente simple, ¡gracias por la sugerencia! –

Cuestiones relacionadas