10
votes

Comment maintenir la ligne sélectionnée UitailView pour revenir à partir d'un écran enfant UINAVIGATIONCONTROLLER?

J'ai une vision utile des clients où une ligne / client est sélectionnée. L'utilisateur peut ensuite pousser une autre vue sur la pile UinavigationController pour ajouter un nouveau client. Lorsque je saute l'écran de l'enfant et revenez à l'UitailView, la ligne précédemment sélectionnée n'est plus sélectionnée.

Je peux ré-sélectionner la ligne dans la vue ViewDidAppear () mais il a l'air mauvais que vous pouvez voir le désélection et le choix. Existe-t-il un moyen de maintenir la ligne sélectionnée lors de son retour de l'écran enfant?


2 commentaires

Et par sélectionneur, voulez-vous dire surligné?


Pour l'intérêt de la sémantique, l'API appelle l'état Chrisp veut comme "sélectionné". Le look visuel est un point culminant, mais Apple en fait référence à titre de sélection. Par exemple, «Sélectionné: ',' DidSelectrowatidExpath: 'Etptera.


7 Réponses :


0
votes

Par défaut, une ligne sélectionnée est désélectionnée (avec animation) lorsque vous reviendrez sur cette VC.
Donc, si vous appuyez sur DétacherViewController, la cellule reste sélectionnée jusqu'à ce que vous reveniez dans la racine racine de raccourci, puis obtient le désélection automatique.

J'avais aussi eu un tel problème. Assurez-vous de toujours appeler la mise en œuvre de la superclasse de méthodes telles que ViewWillappappear, ViewWilldisappear, etc.
En outre, n'appelez pas déselectrowwatidexpath: manuellement.


0 commentaires

-2
votes

Vous ne pouvez pas avoir une TableViewCell sélectionné tout le temps. Cela revient à la normale une fois qu'elle sert de but. Je pense que vous vouliez dire en surbrillance ou semble être sélectionné , et je réponds à la question en fonction de cela.

Obtenez la ligne sélectionnée sur le cellfrowortindexPath . Lorsque vous affichez votre contrôleur de navigation et revenez à la tableView, allez le CellfrowrodIndexPath et avez-vous mis en surbrillance (vous pouvez utiliser n'importe quel Uicolor à votre guise) - Il n'y a pas de moyen spécifique de mettre en évidence des trucs - utilisation Votre imagination - Le style de surbrillance par défaut est bleu, tandis que le texte est blanc.

Comment ça fait?

  1. Trouver la ligne sélectionnée dans CellfrowrotinDExpath
  2. Store est dans une variable externe / ou nsuserdefault et vous pouvez également utiliser nsuserdefault pour communiquer entre l'écran pour savoir si l'article a été sauté à partir de cet écran.
  3. [TableView ReloadData] dans ViewWillappear
  4. Vérification de la valeur NSUserDefaults dans CellfornorTindexpath et modifie cette cellule avec Cell.backgroundColor ou quelque chose.

1 commentaires

Ceci est une erreur. Regardez ma réponse pour que les cellules de vue de la table sont en surbrillance et restez en surbrillance entre les transitions de la page.



1
votes

Vous devez appeler:

[tableView deselectRowAtIndexPath:indexPath animated:YES];


1 commentaires

Comment cela aide-t-il à résoudre le but d'avoir la ligne sélectionnée lorsque l'utilisateur revient de la vue enfant à la vue Master? Cela ne ferait-il pas que la ligne ne soit pas sélectionnée?



1
votes

Si vous le sélectionnez dans la viewwillappear:, il devrait être sélectionné sans que l'utilisateur le voie. Cela résoudrait-il votre problème?


1 commentaires

C'est ce que j'ai essayé et la réapplication est visible pour l'utilisateur. Je veux que la vue soit affichée avec la ligne sélectionnée déjà, comme si l'utilisateur a quitté l'écran sur l'écran de l'enfant.



-3
votes

Sans code, je peux simplement donner un conseil: arrêtez d'utiliser avec [TableView reloaddata] , utilisez [TableView beginumdates] , [TableView endupdates] et - INSERTROWSATIDEXPATHS: SANSROWANIMATION: ET - RELODROWOWOWSATIDEXPATHS: SANSROWANIMATION: . Les choses devraient fonctionner comme prévu.


0 commentaires

28
votes

Je suppose que vous utilisez un contrôleur de vue de table, comme autrement, il est de votre responsabilité d'écrire ce comportement de toute façon. Dans un contrôleur de vue de table, cependant, c'est facile. Just Ajouter dans la vue ViewDiDload: xxx

qui conservera la ligne sélectionnée, sauf si vous désélectionnez manuellement la ligne ou que l'utilisateur sélectionne une autre ligne sur la table.


0 commentaires

0
votes

Ceci est possible:

En une fois cas: Si vous avez le contenu statique dans la TableView, P>

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;


0 commentaires