2009-12-09 3 views
5

J'ai une NSWindow contenant un NSButton et un NSTableView.Activation de NSButton avec des liaisons, basée sur la sélection NSTableView

Je voudrais que le bouton soit activé si et seulement si la table contient au moins un élément, et qu'un seul élément est sélectionné. (Le tableau n'autorise pas la sélection multiple.)

Que puis-je lier à la liaison activée du bouton pour que cela se produise?

+3

Cela sonne beaucoup comme la manière typique d'un Supprimer/Supprimer le bouton est activé. La liaison à la propriété -canRemove du contrôleur est-elle suffisante? –

+1

Avez-vous envisagé de passer à un contrôleur RAID? Cela rend ces choses super faciles. –

Répondre

2

Essayez de vous lier au selectedObjects du contrôleur de matrice, chemin de clé de modèle count, sans transformateur de valeur.

Notez que ce serait dangereux si vous autorisiez la sélection multiple: D'une part, le count pourrait facilement être ni YES ni NO; pour un autre, si l'utilisateur sélectionnait un multiple de 256 éléments, l'octet le plus bas du nombre serait 0, donc la valeur BOOL serait NO même s'il y a une sélection.

+1

Je n'ai aucun contrôleur ArrayController. La vue de table utilise un délégué et une source de données. –

+4

Ensuite, utiliser Bindings est un peu inutile pour ce cas, n'est-ce pas? Créez une sortie pour le bouton et définissez son état activé directement lorsque la sélection change (via le message délégué). –

+1

Ou créez une propriété 'buttonEnabled' dans le modèle et liez-la. Si vous voulez vraiment vous lier à 'NSTableView', vous pouvez lier dans la méthode' -awakeFromNib' la propriété 'enabled' à la propriété' selectedRowIndexes.count' de la vue table. –

14

Ceci est un vieux fil, mais voici mes 2 cents: Utilisation et contrôleur RAID et liez l'état activé du bouton pour

Contrôleur clé: selectedObjects Modèle Chemin clé: @count

fonctionne très bien .

+0

De toutes les informations ici, c'est la seule technique qui fonctionne pour moi. –

+0

Merci .. J'étais sur le point d'écrire du code pour créer une nouvelle propriété booléenne à la place :) –

+0

N'oubliez pas de lier la sélection Table View au contrôleur RAID, et pas seulement son contenu. –

1

Je l'ai rencontré aujourd'hui et je l'ai eu à travailler après quelques efforts.

Mon bouton doit être désactivé si rien est sélectionné dans le « Maître Table »:

Problèmes je suis tombé:

  • Utilisez le bouton réelle et non la pile bouton fermé
  • Spécifiez NO = disabled Pour les valeurs multiples, Aucune sélection, etc.
  • Liez la propriété Enabled à la sélection de la table principale et utilisez une propriété (code dans mon cas), qui est présente.
  • Utilisez le transformateur NSIsNotNil pour activer le bouton si un élément est sélectionné dans la table maître.

enter image description here

Questions connexes