2010-11-10 5 views
0

J'ai un code dans mon willDisplayCell qui sélectionne une ligne/cellule donnée .. cela fonctionneUITableViewCell pas désélectionnée lorsque vous touchez une nouvelle ligne

-(void) willDisplayCell ... 

.... 

if (somecodition) [cell setSelected] (dont remember the actual methodname) 

.... 

C'est ce que je veux accomplir

-(void) ... cellForRow... { 

    if <condition> setPrivateClassVar = indexPath 
} 

-(void) someMethod { 

    [myTableView reloadData]; 

    [myTableView selectRowAtIndexPath:PrivateClassVar ....] 

    // I expected the variable to be set in cellForRow method. 
} 

Cela fonctionne bien car il a mis en surbrillance la ligne correcte. mais parfois après que le UITableView est entièrement affiché et je touche à une nouvelle rangée dans la table; la ligne/cellule sélectionnée est toujours éclairée, laissant deux lignes sélectionnées. Est-ce un comportement normal?

Répondre

0

Afaik ce n'est pas le comportement par défaut. Êtes-vous sûr de ne pas avoir de code en sélectionnant l'ancienne ligne?

+0

Je suppose que ma question serait .. est willDisplayCell un bon endroit pour mettre la logique d'auto-sélection d'une rangée? ou y a-t-il un meilleur endroit pour cela? certains m'ont dit de le mettre après [tableview reloadData] mais je pense que cet appel est asyncoyant. – Arcadian

+0

le mettre après reloadData. Ce n'est pas asynchrone. Aucune des méthodes d'interface utilisateur sont aussi loin que je sache. Ils sont rendus dans le fil principal. –

+0

Je vais essayer encore. mais je pensais que quand willDisplayCell est appelé, il va écraser ma cellule sélectionnée provoquant qu'elle soit désélectionnée – Arcadian

Questions connexes