Deslizar para eliminar y el botón "Más" (como en la aplicación Mail en iOS 7)

Cómo crear un botón "más" cuando el usuario desliza una celda en la vista de tabla (como la aplicación de correo en iOS 7)

He estado buscando esta información tanto aquí como en el foro de Cocoa Touch, pero no consigo encontrar la respuesta y espero que alguien más inteligente que yo pueda darme una solución.

Me gustaría que cuando el usuario pase el dedo por una celda de la vista tabla, se muestre más de un botón de edición (por defecto es el botón eliminar). En la aplicación Mail para iOS 7 se puede deslizar para eliminar, pero hay un botón "MÁS" que se muestra.

Espero que no puedas esperar a que Apple te dé lo que necesitas, ¿verdad? Así que aquí está mi opción.

Crear una celda personalizada. Tener dos uiviews en ella

1. upper
2. lower

En la vista inferior, añade los botones que necesites. Manejar sus acciones como como cualquier otro IBActions. usted puede decidir el tiempo de animación, el estilo y cualquier cosa.

Ahora agregue un uiswipegesture a la vista superior y revelar su vista inferior en el gesto de deslizar. He hecho esto antes y es la opción más sencilla en lo que a mí respecta.

Espero que ayude.

Comentarios (0)

Esto no es posible utilizando el SDK estándar. Sin embargo, hay varias soluciones de terceros que más o menos imitan el comportamiento de Mail.app. Algunas de ellas (e.g. MCSwipeTableViewCell, DAContextMenuTableViewController, RMSwipeTableViewCell) detectan los swipes usando reconocedores de gestos, otras (e.g. SWTableViewCell) ponen un segundo UISScrollView debajo del estándar UITableViewCellScrollView (subvista privada de UITableViewCell) y algunos de ellos modifican el comportamiento de UITableViewCellScrollView.

Me gusta más el último enfoque ya que el manejo táctil se siente más natural. Específicamente, MSCMoreOptionTableViewCell es bueno. Tu elección puede variar dependiendo de tus necesidades específicas (si necesitas un desplazamiento de izquierda a derecha también, si necesitas compatibilidad con iOS 6, etc.). También tenga en cuenta que la mayoría de estos enfoques vienen con una carga: pueden romperse fácilmente en una futura versión de iOS si Apple realiza cambios en la jerarquía de subvistas UITableViewCell.

Comentarios (0)

Necesitas subclasificar UITableViewCell y subclasificar el método willTransitionToState:(UITableViewCellStateMask)state que es llamado cada vez que el usuario desliza la celda. Las banderas state te permitirán saber si el botón Delete se está mostrando, y mostrar/ocultar tu botón More allí.

Desafortunadamente este método no te da ni el ancho del botón Delete ni el tiempo de animación. Así que tienes que observar & hard-code su Más botón's marco y el tiempo de animación en su código (personalmente creo que Apple tiene que hacer algo al respecto).

Comentarios (1)