web-dev-qa-db-fra.com

UITableView supprimer toutes les lignes à la fois

Comment est-il possible de supprimer toutes les lignes de UITableView en même temps? Parce que quand je recharge la vue de table avec de nouvelles données, j'insère encore de nouvelles lignes:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    CustomTableViewCell *cell = (CustomTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero] autorelease];
    }

    //... setting the new cell here ...

    return cell;
}

Je vous remercie.

17
Martin Pilch

Fais ça.

Avant de recharger la table avec

[tableView reloadData];

Supprimez tous les objets de votre tableau tableView (Le tableau qui a rempli votre tableView) Par exemple.

[myArray removeAllObjects];
[tableView reloadData];
48
Legolas

FYI, La solution ci-dessus "Supprimez toutes vos sources de données, puis appelez reloadData." Cela ressemble à ce qu'ils préconisent:

TableView.dataSource = nil;
[TableView reloadData];

J'ai essayé ça et ça a semblé marcher. Sauf qu'iOS 8.1, j'ai eu des plantages aléatoires. Et je veux dire au hasard, comme dans, je pourrais exécuter ce code 10x et il se planterait 1x. Donc, j'ai utilisé la réponse recommandée de:

[myArray removeAllObjects];
[tableView reloadData];

et maintenant je vais bien.

5
Chad Hine

Supprimez tous vos dataSource, puis appelez reloadData.

4
WrightsCS

On dirait que vous n’effacez pas votre collection de données (NSArray) avant d’ajouter des données. UITableView affichera généralement toutes vos données de tableau. Si vous ne voulez pas de lignes/données précédentes, vous devez vider votre tableau avant de lui ajouter de nouvelles informations. Puis appelez [yourTableView reload]

2
dredful

effacez d'abord vos anciennes données

myArray = nil;
[tableView reloadData];

puis chargez vos nouvelles données

myArray = newData;
[tableView reloadData];
0
safaa elgendi