Soit ont deux tableaux mutables et Ayons le code suivant:problème étrange avec [tableView reloadData]
- (void)viewDidLoad
{
NSMutableArray *A = [[NSMutableArray alloc] init];
NSMutableArray *B = [[NSMutableArray alloc] init];
// fill up A
// B remains empty
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
if (...)
{
// fill up the cell with datas of an object from A
}
else
{
// fill up the cell with datas of an object from B
}
//...
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (...)
{
// remove an object from A and put it in B
}
else
{
// remove an object from B and put in A
}
[tableView reloadData];
}
Si [tableView reloadData] est commenté (// [tableView reloadData]), qu'après la "click" la table ne sera pas invalidée, comme prévu. Et si la cellule actuelle défilait et faisait de nouveau défiler dans l'écran, "cellForRowAtIndexPath" est appelé et la cellule "dessiné" à droite selon le tableau duquel devrait être obtenu son contenu. Mais si [tableView reloadData] est actif, alors que "cellForRowAtIndexPath" n'est pas appelé du tout (!) Et la cellule est supprimée de l'écran!
réaction: WHUT?
peut me aider quiconque comment invalider l'tableview à la volée (non en faisant défiler hors de la cellule et dans :))!
Merci d'avance!
Je ferais la mise à jour des cellules affectées dans la méthode didSelectRowAtIndexPath plutôt que d'y appeler reloadData. – onnoweb
Avez-vous utilisé différents identifiants de cellules? –
Avez-vous essayé d'utiliser 'delete/insertRowsAtIndexPaths: withRowAnimation'? Tant que vos tableaux correspondent aux changements, ceci devrait apporter une modification immédiate à votre tableView sans avoir besoin d'appeler 'reloadData'. – justin