1

J'utilise un UICollectionView avec des données de base et NSFetchedResultsController.UICollectionView NSFetchedResultsController créer une section et y déplacer un élément

Lorsqu'une cellule est sélectionnée, je veux la déplacer dans une section différente en haut de la vue de collection. Le problème est que la section n'a peut-être pas encore été ajoutée. J'ai fondamentalement besoin d'ajouter une nouvelle section quand une cellule est sélectionnée avant de déplacer la cellule dans la nouvelle section.

Voir ci-dessous -

enter image description here

Est-ce possible?

Répondre

1

Il semble que vous vous y prenez mal. Si j'étais vous, j'essayerais de supprimer l'objet, puis de le réinsérer avec la bonne clé de section. Donc, si votre NSManagedObject a une clé de section de 1, vous devrez stocker les valeurs des objets localement pendant que vous supprimez l'objet. Ensuite, vous pouvez créer un nouvel enregistrement avec les valeurs stockées et mettre à jour la clé de section à 0.

Ceci devrait enlever l'ancienne cellule et en insérer une nouvelle dans une nouvelle section.

Voir ci-dessous -

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSManagedObject *obj = [_fetchedResultsController objectAtIndexPath:indexPath]; 

    NSString *name = obj.name; 

    [self.managedObjectContext deleteObject:task]; 

    NSError *error = nil; 
    [self.managedObjectContext save:&error]; 

    NSManagedObject *newObj = [NSEntityDescription insertNewObjectForEntityForName:@"entityName" inManagedObjectContext:self.managedObjectContext]; 


    [newObj setValue:name forKey:@"name"]; 

    [self.managedObjectContext newObj]; 

    error = nil; 
    [self.managedObjectContext save:&error]; 
} 
+0

Merci pour cela, il semble un moyen évident d'y aller, et il fonctionne bien! –

+1

Cela ne me semble pas une bonne solution. Si vous avez un contrôleur de résultats récupéré utilisant le paramètre 'sectionNameKeyPath:' pour regrouper les résultats en sections, alors quelque chose comme '[obj setValue: @ (nouveauSectionNumber) forKey: @" sectionNombre "]' devrait être suffisant pour déplacer l'objet vers un section différente automatiquement. –

Questions connexes