2010-03-24 3 views
1

J'ai un contrôleur de vue qui est présenté de façon modale et modifie certaines données qui affectent les données dans une vue uitable dans le contrôleur parent de modal (une vue tabulaire).reloadData ne fonctionne pas - reuseIdentifier de la cellule suspecte

J'appelle la méthode reloadData de tableview lorsque la vue parent réapparaît. J'ai confirmé que ce code est frappé avec un point de rupture. Mon problème est, reloadData ne fonctionne pas. Voici le kicker - si je n'utilise pas reuseIdentifiers dans la méthode - (UITableViewCell *) cellForRowAtIndexPath: (NSIndexPath *) indexPath, les données se rechargent correctement. Il semble que l'identifiant reuseIdentifier soit à blâmer. Je veux vraiment continuer à utiliser le reuseIdentifier pour mes cellules - comment puis-je faire ce travail?

Répondre

0

Le problème est peu probable avec l'identificateur de réutilisation. Veuillez poster votre code pour votre méthode tableView:cellForRowAtIndexPath:.

1

Vous avez compris, et vous avez raison, ce n'est pas le reuseIdentifer.

Je nichait l'affectation de contenu juste en dessous de l'allocation des cellules comme ceci:

// Dequeue or create a cell of the appropriate type. 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    cell.accessoryType = [targetRow.children count] ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone; 

// Configure the cell. 
cell.textLabel.text = [NSString stringWithFormat: targetRow.title]; 
} 

Depuis la cellule a été trouvé dequeued, le contenu serait pas mis à jour.

je l'ai changé à cela et tout fonctionne très bien maintenant ...

// Dequeue or create a cell of the appropriate type. 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

} 

cell.accessoryType = [targetRow.children count] ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone; 

// Configure the cell. 
cell.textLabel.text = [NSString stringWithFormat: targetRow.title]; 
+0

Je pense que c'est une erreur commune quand vous commencez à traiter UITableViews. Je sais que j'ai fait la même chose. –

+0

Salut, pouvez-vous me dire quelle est la signification de cette ligne "cell.accessoryType = [nombre targetRow.children]? UITableViewCellAccessoryDisclosureIndicator: UITableViewCellAccessoryNone; "? ce point d'interrogation sur la syntaxe est étrange pour moi ... comment puis-je apprendre à l'utiliser? – SpaceDog

+0

Je l'ai toujours appelé une instruction "en ligne si", pas sûr si c'est le terme technique ou juste geek argot. Fondamentalement, c'est comme si vous tapiez: if ([targetRow.children count]) {cell.accessoryType = UITableViewCellAccessoryDisclosure; } else {cell.accessoryType = UITableViewCellAccessoryNone; } - Un autre bon outil pour les programmeurs paresseux :) Aussi beaucoup plus propre à lire. –

Questions connexes