2011-06-10 4 views
0

J'essaie d'utiliser un UITableViewController et de remplacer le bouton de mode d'édition (la valeur par défaut est 'Supprimer') avec une vue personnalisée.editingAccessoryView n'apparaît pas?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... (other code) ... 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.tag = pd.itemId; 
    UIImage *indicatorImage = [UIImage imageNamed:@"indicator.png"]; 
    cell.editingAccessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; 
    //cell.accessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; 
    return cell; 
} 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return NO; 
} 

Lorsque j'essaie de glisser, rien ne se passe. Ce qui est étrange, c'est que si je décommente la ligne cell.accessoryView, mon image semble très bien. Cela me fait penser que quelque chose à propos des paramètres d'édition est faux? Mais nulle part en ligne ou dans la documentation, je ne peux trouver ce que ces paramètres sont supposés être.

Merci!

Mise à jour: Ah. ok, donc je me suis donné un bouton 'edit' pour le contrôleur de navigation UITableView. Maintenant, je peux basculer toutes les cellules en mode édition, et mon accessoire apparaît. Qu'est-ce que "balayer" une cellule faire alors?

Kurt

Répondre

0
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 

canEditRowAtIndexPath devrait revenir OUI si vous définissez la editingAccessoryView et que vous voulez qu'il apparaisse. Accessoire uniViewView est visible lorsque la table n'est pas en mode d'édition. Cependant lecture de la piste la cellule affiche le bouton de confirmation de suppression qui n'est pas editingAccessoryView, et de jouer avec

- (void)willTransitionToState:(UITableViewCellStateMask)state; 

sans appeler [super willTransitionToState: état]; conduira à un comportement inattendu (votre cellule ne quittera pas l'état UITableViewCellStateShowingDeleteConfirmationMask). Si vous pouvez gérer l'appel super et ne pas permettre à la cellule d'afficher le bouton de confirmation de suppression, alors vous avez terminé.

+0

la modification du non à oui n'a pas permis le balayage. Voulez-vous dire que je dois sous-classer UITableViewCell et remplacer willTransitionToState? Cela semble être inutile, étant donné que j'utilise les champs standard de UITableViewCell. –

+0

Je voulais aussi ajouter, j'ai lu la documentation de willTransitionToState, et il semble indiquer que l'état du bouton 'show delete' est différent de l'état 'editing'. Quelqu'un peut-il élaborer à ce sujet? Je pensais que l'affichage du bouton de suppression est juste l'état d'édition standard. –

+0

Essayez tableView.editing = YES; pour voir l'état d'édition réel (supprimer le bouton rond à gauche, réorganiser le contrôle sur la droite d'habitude), le balayage est différent ... – tsakoyan