42 votes

Mode d'édition de UITableView

J'ai UITableView et j'essaie de le charger par défaut en mode édition. Le problème est que lorsque j'utilise cette ligne table.editing=TRUE; mes rangs disparaissent, j'ai implémenté cette méthode :

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
// Return NO if you do not want the specified item to be editable.
return YES;
}

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

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

mais sans succès. Que dois-je faire ?

61voto

Ahmad Kayyali Points 5702

Comme Anish indiqué à l'aide de

[tableView setEditing: YES animated: YES]; 

Mais vous devez l'avoir dans viewWillAppear pour que cela fonctionne.

10voto

Anish Points 1992

Essayez ceci...

[tableView setEditing: YES animated: YES];

7voto

Hardik Thakkar Points 11

Dans ViewDidLoad, écrire

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style: UIBarButtonItemStyleBordered target:self action:@selector(addORDoneRows)];
[self.navigationItem setLeftBarButtonItem:addButton];

addORDoneRow

- (void)addORDoneRows
{
    if(self.editing)
    {
        [super setEditing:NO animated:NO];
        [_dbSongsTblView setEditing:NO animated:NO];
        [_dbSongsTblView reloadData];
        [self.navigationItem.leftBarButtonItem setTitle:@"Edit"];
        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStylePlain];
    }
    else
    {
        [super setEditing:YES animated:YES];
        [_dbSongsTblView setEditing:YES animated:YES];
        [_dbSongsTblView reloadData];
        [self.navigationItem.leftBarButtonItem setTitle:@"Done"];
        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStyleDone];
    }
}

Pour la sélection multiple d'une rangée

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

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

Note : Il existe trois styles d'édition, comme suit

UITableViewCellEditingStyleNone,
UITableViewCellEditingStyleDelete,
UITableViewCellEditingStyleInsert

Remarque : Pour une sélection multiple, définissez le style de sélection et d'édition sur Multiple dans l'inspecteur d'attributs.

2voto

Andrej Points 4971

Pour charger un tableView en mode édition, vous devez appeler setEditing(true, animated: false) en viewDidLoad() .

Si votre contrôleur de vue est une sous-classe de UITableViewController il n'y a pas besoin de changer, faites simplement l'appel ci-dessus. Sinon, si votre contrôleur de vue est une sous-classe de UIViewController, alors vous devez faire un appel de cette façon : tableView.setEditing(true, animated: true) .

Testé avec Swift 2.2.

0voto

Georgy Brusnikin Points 155

[self.tableView setEditing:!self.tableView.isEditing animated:YES] ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X