2010-11-20 4 views
2

- (BOOL) tableView: (UITableView *) tableView canMoveRowAtIndexPath: (NSIndexPath *) indexPath {NSUInteger rang = [indexPath ligne]; if (row == 0) return NO; return YES; }UITableView: lignes se déplacer dans le mode d'édition

Mon problème est le suivant: bien que j'ai spécifié NON pour la ligne 0. Si je tente de faire glisser la ligne 1 pour remplacer la ligne 0, l'animation laisse cela se produire de toute façon. Le problème est que la méthode ci-dessus décide seulement s'il y a ou non une icône de déplacement sur la droite de la ligne. Des idées sur la façon d'empêcher la ligne 0 d'être remplacée?

Répondre

4

Utilisez

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath 

du UITableViewDelegate.

Vous pouvez faire quelque chose comme ceci:

if ([proposedDestinationIndexPath row] > 0) { 
    return proposedDestinationIndexPath; 
} 

NSIndexPath *betterIndexPath = [NSIndexPath indexPathForRow:1 inSection:0]; 
return betterIndexPath; 

(De "Programmation iPhone" par Joe Conway & Aaron Hillegass)

+0

merci fabian! la méthode exacte que je cherchais. – bogardon

Questions connexes