web-dev-qa-db-fra.com

Mode d'édition UITableView

J'ai UITableView et j'essaye de le charger par défaut en mode édition. Le problème est que lorsque cette ligne table.editing=TRUE; mes lignes 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 chance. Que devrais-je faire?

41
user739509

commeAnisha indiqué d'utiliser

[tableView setEditing: YES animated: YES]; 

Mais vous devez l'avoir dans l'événement viewWillAppear view pour que cela fonctionne.

61
Ahmad Kayyali

essaye ça...

[tableView setEditing: YES animated: YES];
10
Anish

Dans ViewDidLoad, écrivez

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 plusieurs sélections de rangées

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

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

Remarque: Il existe trois styles d'édition comme ci-dessous

UITableViewCellEditingStyleNone,
UITableViewCellEditingStyleDelete,
UITableViewCellEditingStyleInsert

Remarque: Et pour plusieurs sélections, définissez Selection and Editing Style to Multiple depuis l'inspecteur d'attributs

7
Hardik Thakkar

Pour charger une table en mode édition, vous devez appeler setEditing(true, animated: false) dans viewDidLoad().

Si votre contrôleur de vue est une sous-classe de UITableViewController, il n'est pas nécessaire de changer, effectuez simplement l'appel ci-dessus. Sinon, si votre contrôleur de vue est une sous-classe de UIViewController, vous devez alors effectuer un appel de cette manière: tableView.setEditing(true, animated: true).

Testé avec Swift 2.2.

2
Andrej

[self.tableView setEditing:! self.tableView.isEditing animé: OUI];

0
Georgy Brusnikin