web-dev-qa-db-fra.com

Comment sélectionner plusieurs lignes dans UITableView en mode édition?

Je veux demander, comment puis-je transférer en mode édition, où je peux sélectionner plusieurs lignes, comme dans l'application Messages, lorsque vous cliquez sur le bouton en haut à droite "Sélectionner", lorsque vous pouvez choisir plusieurs messages en appuyant sur les cercles.

Comme ça:

enter image description here

J'ai beaucoup cherché, vraiment, mais je n'ai rien trouvé. Quelqu'un peut-il m'aider? Quelques conseils

13
user4809833

Ensemble

tableView.allowsMultipleSelectionDuringEditing = true

Capture d'écran

Code démo

class TableviewController:UITableViewController{
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.allowsMultipleSelectionDuringEditing = true
        tableView.setEditing(true, animated: false)
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
        cell.textLabel?.text = "\(indexPath.row)"
        return cell
    }
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
}
44
Leo

Si vous utilisez des storyboards, procédez comme suit:

enter image description here

7
Islam Q.
NSMutableArray *selected;

déclarez-le dans votre fichier viewcontroller.h.

selected =[[NSMutableArray alloc]init];
for (int i=0; i<[YOUR_ARRAY count]; i++) // Number of Rows count
        {
            [selected addObject:@"NO"];
        }

ajoutez le même nombre de "NON" dans le tableau sélectionné en utilisant le code ci-dessus pour que vous deviez remplacer YOUR_ARRAY par votre tableau de données que vous montrez dans le tableau.

    if(![[selected objectAtIndex:indexPath.row] isEqualToString:@"NO"])
{

    cell.accessoryType=UITableViewCellAccessoryCheckmark;

}

else
{
    cell.accessoryType=UITableViewCellAccessoryNone;
}

placez le code ci-dessus dans votre - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];


if (cell.accessoryType == UITableViewCellAccessoryNone) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [selected replaceObjectAtIndex:path.row withObject:@"YES"];
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
    [selected replaceObjectAtIndex:path.row withObject:@"NO"];
}

}

mettre également cela pour fonctionner correctement ..

3
ash999