Quiero poder deslizar hacia la izquierda o derecha en cualquier lugar en una celda de vista de tabla para borrar la celda de con animación sin mostrar el botón Eliminar. ¿Cómo puedo hacer esto?Deslice hacia la izquierda o derecha en cualquier lugar en una UITableViewCell para eliminar la celda sin eliminar el botón?
Respuesta
No he intentado e implementado esto, pero lo intentaré. En primer lugar, crear una costumbre UITableViewCell, y dejar que se tienen 2 propiedades que se pueden utilizar
- Una referencia a la tableView que se está utilizando en.
- Un indexPath para encontrar la celda de la tableView. (Nota, esto debe actualizarse cada vez que elimine una celda para todas las celdas donde esto cambie)
En su cellForRowAtIndexPath:
, donde crea la celda personalizada, establezca estas propiedades. También añadir un UISwipeGestureRecognizer a la célula
cell.tableView=tableView;
cell.indexPath=indexPath;
UISwipeGestureRecognizer *swipeGestureRecognizer=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(deleteCell:)];
[cell addGestureRecognizer:swipeGestureRecognizer];
[swipeGestureRecognizer release];
Asegúrese de que el gesto sólo recibe golpes horizontales.
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([[gestureRecognizer view] isKindOfClass:[UITableViewCell class]]&&
((UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionLeft
||(UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionRight)) return YES;
}
En su deleteCell:
-(void) deleteCell:(UIGestureRecognizer*)gestureRec
{
UIGestureRecognizer *swipeGestureRecognizer=(UISwipeGestureRecognizer*)gestureRec;
CustomCell *cell=[swipeGestureRecognizer view];
UITableView *tableView=cell.tableView;
NSIndexPath *indexPath=cell.indexPath;
//you can now use these two to perform delete operation
}
No olvide que debe establecer la dirección del reconocedor de gestos cuando lo inicialice por primera vez para agregarlo a la celda. Algo como esto: swipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight; – ColossalChris
Apple, maldito sea por no proporcionar '(void) cancelPreviousPerformRequestsWithTarget: (id) aSelector de destino: (SEL) aSelector'. –
para los que tiene que agregar este código en su proyecto.
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return YES if you want the specified item to be editable.
return YES;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
}
}
información Else mor u puede ir a través de este enlace enter link description here
Vivek2012 y iWill: gracias por sus respuestas, pero no quiero mostrar un botón ELIMINAR, ya hay respuestas a las de stackoverflow. Quiero que la celda se borre desde el momento en que recibe un gesto hacia la izquierda o hacia la derecha.lea mi descripción gracias – carbonr
implemento
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
estos dos métodos, si el UITableViewCellEditingStyle es UITableViewCellEditingStyleDelete, a continuación, hacer algo para borrar su celda con
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
eso es todo.
La solución Publicado por @MadhavanRP funciona, pero es más complejo de lo que debe ser. Podría adoptar un enfoque más simple y crear un reconocedor de gestos que maneje todos los deslizamientos que ocurren en la tabla, y luego obtener la ubicación del deslizamiento para determinar qué celda usó el usuario.
Para configurar el reconocedor gesto:
- (void)setUpLeftSwipe {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(swipeLeft:)];
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.tableView addGestureRecognizer:recognizer];
recognizer.delegate = self;
}
llama a este método en viewDidLoad
Para manejar el golpe:
- (void)swipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer {
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
... do something with cell now that i have the indexpath, maybe save the world? ...
}
nota: su vc debe implementar el delegado gesto reconocedor .
- 1. jQuery: deslice hacia la izquierda y deslice hacia la derecha
- 2. cómo mover un botón hacia la izquierda o hacia la derecha programáticamente en android
- 3. Cómo detectar si el botón eliminar UItableviewcell estaba oculto?
- 4. ¿Cómo detectar deslizar hacia la izquierda/derecha en el iPhone?
- 5. Gire la imagen hacia la derecha o hacia la izquierda dentro de un div usando javascript
- 6. Desbordamiento a la izquierda en lugar de a la derecha
- 7. Cómo cambiar la imagen de UIImageView deslizando hacia la derecha o hacia la izquierda desde UIViewController
- 8. iOS: deslizar hacia la izquierda/derecha entre las pestañas posibles?
- 9. Alinee el diseño de dos botones hacia la izquierda y hacia la derecha en Android
- 10. UITableViewCell. ¿Cómo destaco la celda durante el toque hacia abajo?
- 11. UIButton en la celda UITableView como "Eliminar evento"
- 12. Deslice hacia arriba y Deslice hacia abajo la animación en Webview en Android
- 13. ¿Hay alguna manera de desplazar las líneas resaltadas hacia la izquierda o hacia la derecha en el Bloc de notas ++
- 14. UITableViewCell, Eliminar marco de botones?
- 15. UITableViewCell con imagen a la derecha?
- 16. , ¿qué evento se usa para deslizar el dedo hacia la izquierda y hacia la derecha en Android?
- 17. Eliminar la combinación izquierda en Oracle 10g
- 18. ¿Cómo puedo desplazar las imágenes de página en archivos PDF más hacia la izquierda o hacia la derecha?
- 19. MSysGit Bash: ¿cómo habilitar Ctrl + flechas hacia la izquierda/derecha?
- 20. Cómo eliminar el fondo blanco de UITableViewCell
- 21. Descartar mediante programación el botón/estado "deslizar para eliminar" para UITableViewCell?
- 22. cómo eliminar la recursividad a la izquierda
- 23. vim eliminar trucos hacia atrás
- 24. ¿Calcula la forma más corta de rotar, derecha o izquierda?
- 25. Deslizar para eliminar en UITableViewCell tiene fondo blanco, necesita borrar
- 26. Eliminar líneas hacia atrás
- 27. Eliminar espacio en blanco de la izquierda de NSString
- 28. Cómo justificar a la izquierda o a la derecha un encabezado de columna en una JTable
- 29. Agregue deslizar hacia la izquierda/derecha a la página web, pero use la función predeterminada deslizar hacia arriba/abajo
- 30. Eliminar n líneas en la dirección hacia arriba en vim
si puede, publique su código? –