Comment effacer les données de TableView et recharger avec un nouveau? P>
8 Réponses :
Utilisez la méthode [TableView ReloaderData] sur la vue Table d'UI P>
Soyez juste prudent le faire en mode édition.
OK .. Mais .. Nous avons besoin de la solution pour cela. Si nous ajoutons les cellules en runtime, j'ai reçu la sortie avec les mêmes cellules dans les premières et les dernières cellules de l'utableview ..
Vous pouvez effacer La cellule avant d'ajouter des sous-espions p>
exemple: p>
Effacez vos données avant d'appeler Reloaderdata, et maintenant, l'utilisateur verra que le tableau sera effacé et re-peuplé avec de nouvelles données.
myArray = nil; [myTableView reloadData];
Vous pouvez regarder la valeur de la cellule réutilisée et si ce n'est pas la même - puis de la recréer.
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyLog(@"Start Table: cellForRowAtIndexPath: %d", indexPath.row);
NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
UILabel *lblNew;
lblNew = [UILabel new];
UILabel *lblCell;
lblCell = [UILabel new];
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
[cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];
}
else
{
lblNew = [lblNameArray objectAtIndex:indexPath.row];
for (id label in [cell.contentView subviews])
{
if ([label isKindOfClass:[UILabel class]])
{
lblCell = label;
}
}
if (![lblNew.text isEqualToString:lblCell.text])
{
cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
[cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];
}
}
return cell;
C'était mon wrok autour qui a fonctionné.
Définir la cellule = nul;
J'ai eu des entrées doubles sur la sélection après le défilement. Maintenant, l'affichage est aussi propre que prévu!
Utilisé la solution de contournement et aussi (BTW: ClearScontextBeforeRawing comme autonome, il n'a pas fonctionné p> dans le simulateur, j'ai l'impression de plus précise réaction sur la sélection des cellules.
Merci! P> p>
Au fait, ClearScontextBeforeRawing code> est une propriété, et [cell.contentView clearsContextBeforeDrawing];
SWIFT STRAND>: Pas sûr que ce soit le meilleur moyen ou non, mais j'utilise ce code pour effacer et RoLoad Data: fileprivate func clearTable() {
self.tableviewData.removeAll(keepingCapacity: false)
self.tableView.reloadData()
}