アプリが選択されていない時は「ー」ボタンを Disable にしたい。
Outletでつないで制御するのも手だが、Cocoa Bindings を使えばもっと簡単にできる。今回表示データは NSArrayController で管理しているので、ここの値(メソッド)とボタンの Enabled との間でバインドできれば良さそうだ。状況としては、選択されているか、非選択のかの2つの状態が判断できればいい。
NSArrayController のリファレンスを眺めていると、そのものズバリのメソッドはなかったが -[NSArrayController selectionIndexes] が NSIndexSet を返すので、-[NSIndexSet count] をとれば 0(非選択)、0以外(選択)が取れそうだ。これを仕込んでみる。
Key Path に selectionIndexes.count と書けば、selectionIndexes、count と順番にメッセージを投げてくれる。
# もっといい方法があれば教えて欲しい。
- - - -
Cocoa Bindings は便利。
(追加)複数の方の指摘で -[NSObjectController canRemove] があることが判明。
NSObjectController Class Reference - canRemove
こちらの方が適切のようだ。実際期待通りの動作を確認しました。
指摘してくれた方々ありがとうございました。