2009-01-30 7 views
-1

J'ai une application avec UITableView, en utilisant à la fois les icônes et les boutons de divulgation. Je veux mettre à jour l'icône sur une rangée avec une icône "sélectionnée", et mettre à jour la ligne précédemment sélectionnée avec une icône "non sélectionnée". J'ai le code en place, mais quand je clique sur les lignes, il met les deux lignes à l'état "sélectionné", même si par le débogage je peux voir que ma variable d'état est définie sur la bonne ligne. Si je continue à cliquer sur des lignes, je peux parfois afficher l'état "non sélectionné". Je suppose que c'est un problème d'actualisation, mais j'ai essayé la méthode setNeedsDisplay sur les cellules et la tableView elle-même, mais sans succès. Quelqu'un a-t-il déjà rencontré ça? BTW, c'est dans le simulateur (2.2.1) - ne l'ai pas essayé sur l'appareil.Actualiser NSTableView Après un clic - Non Rafraîchissant

Voici le code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     int newRow = [indexPath row]; 
     int oldRow = [lastIndexPath row]; 

     if (newRow != oldRow) 
     { 
      [[tableView cellForRowAtIndexPath:indexPath] setImage: [UIImage imageNamed:@"IsSelected.png"]]; 

      c_oListPtr.c_sCurItem = [[tableView cellForRowAtIndexPath:indexPath] text]; 

      [[tableView cellForRowAtIndexPath:lastIndexPath] setImage: [UIImage imageNamed:@"NotSelected.png"]]; 

      [lastIndexPath release]; 
      lastIndexPath = indexPath; 

      [[tableView cellForRowAtIndexPath:lastIndexPath] setNeedsDisplay]; 
      [[tableView cellForRowAtIndexPath:indexPath] setNeedsDisplay]; 
      [tableView setNeedsDisplay]; 
     } 

     [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    } 

Merci -Mike

Répondre

2

Avez-vous essayé [tableView reloadData]?

Questions connexes