2009-12-12 20 views
0

J'ai un NSArrayController dont le contenu est la propriété "servers" de mon AppDelegate.Comment effectuer une action en réponse à un élément ajouté au contenu d'un NSArrayController?

j'ai une NSTextField qui est lié à la propriété « selection.name » du NSArrayController et j'ai des boutons attachés aux actions « add: » et « remove: » sur le NSArrayController. Ce que je voudrais voir se produire, c'est quand je clique sur le bouton "Ajouter", le NSTextField devient le premier répondeur afin que les utilisateurs puissent immédiatement modifier le nom du serveur.

Ma stratégie actuelle est d'observer la propriété « arrangedObjects » du NSArrayController, mais tout ce que je reviens de la NSKeyValueChangeKindKey est le NSKeyValueChangeSetting ENUM. J'espérais obtenir la valeur NSKeyValueChangeInsertion afin que je puisse demander au champ de texte de devenir le premier répondant.

Ma question est la suivante: est-ce que j'y vais de la bonne façon ou y a-t-il un moyen plus commun d'y parvenir? Je fais de bonnes fixations, je me bats avec la façon d'insérer mon propre comportement dans les failles.

Répondre

1

Créez une sous-classe de NSArrayController avec une sortie vers le champ de texte. Remplacer la méthode add:; Dans votre implémentation, envoyez immédiatement le message à super, puis dites à la fenêtre que le champ de texte doit être le premier répondeur.

+0

Merci pour votre aide. Pour une raison quelconque, j'ai dû envoyer le makeFirstResponder: message avec performSelector: withObject: afterDelay: (après avoir appelé super) pour le faire prendre. –

+0

Vous avez probablement besoin du délai puisque - [NSArrayController add:] retarde son travail en interne. –