Estoy usando un CollectionView en mi app de ios. Cada colección celda contiene un botón de borrar. Haciendo clic en el botón de la célula debe ser eliminado. Después de la eliminación, que el espacio se llena de debajo de la celda (no deseo volver a cargar la CollectionView y empezar desde la parte superior de nuevo)

¿Cómo puedo eliminar una celda en particular de UICollectionView con autodiseño?

En resumen: Usted debe seguir MVC protocolo. Borrar los datos del Modelo y, a continuación, volver a cargar la Vista. Para una respuesta más detallada que usted debe publicar su código (solo las partes donde se sospecha que el problema está) y describir lo has probado ya… de lo Contrario todo lo que vas a conseguir son downvotes en lugar de una buena respuesta. Toma una buena pregunta para obtener una buena respuesta. La lectura de preguntas frecuentes no duele.

OriginalEl autor New Jango Tester | 2013-04-24

2 Comentarios

  1. 35

    UICollectionView va a animar y ordenar automáticamente las células después de la eliminación.

    Eliminar los elementos seleccionados de la colección de la vista

    [self.collectionView performBatchUpdates:^{
    
        NSArray *selectedItemsIndexPaths = [self.collectionView indexPathsForSelectedItems];
    
        //Delete the items from the data source.
        [self deleteItemsFromDataSourceAtIndexPaths:selectedItemsIndexPaths];
    
        //Now delete the items from the collection view.
        [self.collectionView deleteItemsAtIndexPaths:selectedItemsIndexPaths]; 
    
    } completion:nil];
    
    
    
    //This method is for deleting the selected images from the data source array
    -(void)deleteItemsFromDataSourceAtIndexPaths:(NSArray  *)itemPaths
    {
        NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
        for (NSIndexPath *itemPath  in itemPaths) {
            [indexSet addIndex:itemPath.row];
        }
        [self.images removeObjectsAtIndexes:indexSet]; //self.images is my data source
    
    }
    tiempo de eliminación de la célula se fija cómo hacer animación lenta o rápida.
    Usted necesita crear una subclase de la UICollectionViewFlowLayout. Particularmente implementar finalLayoutAttributForItemAtIndexpath. Verificar this

    OriginalEl autor Anil Varghese

  2. 7

    Ningún delegado métodos proporcionados a UICollectionViewController como UITableviewController.
    Podemos hacerlo de forma manual mediante la adición de un largo gesto de reconocimiento a UICollectionView.

     UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self
                                                                                             action:@selector(activateDeletionMode:)];
     longPress.delegate = self;
     [collectionView addGestureRecognizer:longPress];

    En longGesture método de botón de agregar en esa celda determinada.

    - (void)activateDeletionMode:(UILongPressGestureRecognizer *)gr
    {
        if (gr.state == UIGestureRecognizerStateBegan) {
            if (!isDeleteActive) {
            NSIndexPath *indexPath = [collectionView indexPathForItemAtPoint:[gr locationInView:collectionView]];
            UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
            deletedIndexpath = indexPath.row;
            [cell addSubview:deleteButton];
            [deleteButton bringSubviewToFront:collectionView];
            }
         }
     }

    En el botón de acción,

    - (void)delete:(UIButton *)sender
    {
        [self.arrPhotos removeObjectAtIndex:deletedIndexpath];
        [deleteButton removeFromSuperview];
        [collectionView reloadData];
    }

    Creo que puede ayudar a usted.

    [deleteButton bringSubviewToFront:collectionView]; parece ser un error.

    OriginalEl autor Himanshu

Dejar respuesta

Please enter your comment!
Please enter your name here