ページ

2010年5月7日金曜日

Cocoa Bindingsを使ったボタンの Disable

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

アプリが選択されていない時は「ー」ボタンを 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

こちらの方が適切のようだ。実際期待通りの動作を確認しました。
指摘してくれた方々ありがとうございました。