2010-03-17 4 views
0

Je voudrais créer un effet sur une cellule d'un UITableView. L'effet est: dupliquer la cellule et déplacer la cellule dupliquée (l'original reste à sa place). Mon problème est de dupliquer la cellule ...Dupliquer un UITableViewCell - iPhone

J'ai essayé:

code:

UITableViewCell *animatedCell = [[UITableViewCell alloc] init]; 
animatedCell = [[self cellForRowAtIndexPath:indexPath] copy]; 

mais UIView ne semble pas mettre en œuvre la copie ... Comment puis-je faire ?

Merci

Répondre

3

Si vous avez besoin que l'image dupliquée de votre cellule pour l'animation (pas une vue réelle avec toutes les sous-vues) vous pouvez simplement copier l'image de la cellule:

UITableViewCell * aCell = [tableView cellForRowAtIndexPath:indexPath]; 
UIGraphicsBeginImageContext(aCell.frame.size); 
[aCell.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *aCellImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageView * imageView = [[UIImageView alloc] initWithImage:aCellImage]; 

Ou si vous avez besoin d'une vue réelle, créez-la. Et tenez compte du fait que UITableView ne crée pas de cellules, vous le faites dans tableView: cellForRowAtIndexPath: méthode de votre tableViewSourceSource. Donc, utilisez le même code pour créer une autre cellule avec indexPath ... Mais ne créez pas d'objet UITableViewCell, créez plutôt UIView et ajoutez-le à containView de la cellule. Et lorsque vous avez besoin d'une cellule dupliquée, créez une autre instance de la même UIView et utilisez-la dans votre animation.

+0

PARFAIT !!! merci beaucoup ... – ncohen

+0

Merci, c'est si simple. –

0

Vous ne voulez généralement pas affecter manuellement les cellules (sauf dans votre tableView: tableView cellForRowAtIndexPath: méthode déléguée). Au lieu de cela, faites tout ce que vous changements sont nécessaires dans votre modèle de données pour refléter la nouvelle cellule, puis dire au tableview d'insérer une nouvelle ligne:

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 
+0

Je ne veux pas modifier ma vue de table ... Je veux juste copier une cellule de ma vue de table et l'utiliser pour faire une animation! – ncohen

Questions connexes