2010-02-22 2 views
12

Je suis mis en mode d'édition pour UITableView pour avoir une possibilité de réorganisation des cellules. UITableViewCellEditingStyleNone est renvoyé par la méthode editingStyleForRowAtIndexPath: pour chaque cellule, mais il réserve une zone à gauche de la cellule. Est-il possible d'empêcher une telle réservation de zone, parce que je n'ai pas besoin d'une icône d'insertion ou de suppression à gauche? En bref, je veux avoir une cellule qui occupe toute la zone disponible et qui peut encore être réorganisée.Comment empêcher UITableView de réserver de l'espace à gauche de la cellule lorsque l'édition est activée?

Répondre

7

Voir la docs: Vous pouvez définir une valeur booléenne sur la cellule pour le rendre non tiret. Ajoutez simplement

cell.shouldIndentWhileEditing = NO; 

où vous créez votre cellule.

+1

Merci beaucoup, ça marche. Mlle cette option un peu :(Je suis utilisation - (BOOL) tableView: (UITableView *) tableView shouldIndentWhileEditingRowAtIndexPath:. (NSIndexPath *) indexPath { \t retour NO; } parce que je besoin pour toutes les cellules –

0

Réglez cette option comme 2 ou 3

tableView: indentationLevelForRowAtIndexPath:

0

La propriété shouldIndentWhileEditing ne fonctionne qu'avec les tables groupées. J'ai trouvé que la définition d'un niveau d'indentation de -3 fait le travail pour les tables simples. Y a-t-il un meilleur moyen? Voici ce que j'utilise maintenant:

if (self.tableView.style == UITableViewStylePlain) { 
     cell.indentationLevel = -3; 
    } else if (self.tableView.style == UITableViewStyleGrouped) { 
     cell.shouldIndentWhileEditing = FALSE; 
    } 
+0

En fait, shouldIndentWhileEditing fonctionne pour les tables simples pour moi, mais votre façon de solution est également possible, mais une sorte de hackish :) –

33

// UITableViewDelegate

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { 
    return NO; 
} 
+0

cela a fonctionné pour moi !! –

0

à faire les deux

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

et

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleNone; 
} 

dans votre UITableViewDelegate. Sinon, le contenu de la cellule est en retrait.

Questions connexes