J'ai un problème en maintenant la sélection sur un NSTableView
. J'utilise xCode 8.3.3 avec Swift 3.1 et construit pour macOS. Le tableauView basé sur les cellules est créé dans IB et a un NSButtonCell
(une case à cocher) dans la première colonne du tableau. Cette colonne est liée à ModifiersController.arrangedObjects.enabled
. La case à cocher fonctionne comme prévu ce qui signifie qu'elle peut être correctement cochée et décochée.Comment gérer la sélection TableView avec "Gère le contenu en tant que valeur composée"
Le problème est que lorsque je change l'état de la case en cliquant dessus, la ligne sélectionnée n'est plus sélectionnée et la première ligne est sélectionnée. Quelle que soit la ligne sélectionnée lorsque je change la case, c'est toujours la première ligne qui est sélectionnée. Ce que je m'attends à ce que ce que je m'attends à ce que la vérification/décochage de la boîte ne devrait pas affecter les lignes sélectionnées (mise en évidence).
Le ArrayController est nommé 'ModifiersController', et son Content Array
est lié à une clé User Defaults Controller
nommé MinimizeModifiers
. Le MinimizeModifiers
est un dictionnaire de valeurs avec un Value Transformer
personnalisé. En raison de cela, j'ai activé la case Poignées de contenu en tant que composé Valeur
Lorsque Poignées de contenu en tant que composé Valeur est hors (désactivé), la sélection dans la table est bien entretenu, mais le code sous-jacent (bindings à UserDefaults) ne fonctionne pas.
Lorsque Poignées de contenu en tant que composé Valeur est sur, les valeurs des éléments UI sont correctement liés à UserDefaults, cependant, ce est ce qui semble faire la table perdre la sélection actuelle. Donc, la question est: Comment est-ce que je peux maintenir la sélection de rangée de table quand manipule le contenu en tant que valeur composée est permis?
Addendum
Le tableView est lié à selectionIndexes
et le contrôleur RAID est réglé sur preserve selection
(j'ai aussi essayé avec preserve selection
au large, et « Éviter la sélection vide » à la fois sur et en dehors - sans succès).
Et un lien vers un mini film montrant la question (si cela est autorisé) ... https://www.rgbworld.com/images/stackoverflow/selection.m4v
ADDITIF2
J'ai mis à jour le code pour Xcode 9 et Swift 4 et le problème persiste.Je crois que le problème peut avoir à faire avec mon utilisation de KVO et/ou l'utilisation de variables de support pour @objc dynamic var
s
J'ai créé un dépôt github au cas où quelqu'un pourrait aider. Je vais ajouter une prime pour le dev qui m'aide à résoudre ce problème.
Githib repo
https://github.com/rgbworld/CompoundTransformer https://github.com/rgbworld/CompoundTransformer
Avez-vous binds « Index de sélection » de l'affichage du tableau au contrôleur de tableau? Est-ce que 'Preserve Selection' est activé? – Willeke
@Willeke Merci pour votre réponse. Oui et oui. J'ai mis à jour la question pour montrer les paramètres. – rgbworld
Je ne peux pas reproduire ce problème, mais cliquer sur une case ne déclenche pas la sauvegarde des données. Quelque chose de bizarre se passe, quand j'ai essayé de découvrir comment la vue de table manipule la sélection, j'ai fini dans les mêmes méthodes qu'avec cette question [Comment faire NSArrayController préserveSelection fonctionne pour l'objet fait sur commande?] (Https: // stackoverflow. com/questions/46233759/comment-faire-nsarraycontroller-preservesselection-work-for-custom-object). – Willeke