ページ

2008年4月3日木曜日

PreferencesをBindingで使う

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

PreferecesをBindingを利用して使ってみた。

参考情報:ADC: Binding your Preferences in Cocoa

下のようなウィンドウを作り、各コントロールを NSUserDefaultsController とバインドする。


下は "Shadow"チェックボックスのバインディング。Valueの Model Key Path に適当な名前を入れておく。ここでは項目名と同じ "Shadow"を入れているが何でも良い。


すると自動的に MainMenu.nib に Shared User Defaults Controller が追加される。



これだけでおしまい。

アプリを実行してチェックボックスやテキストボックスを編集するとそれが自動的に保存される。次回起動時は保存した値がやはり自動的に反映される。

保存情報はユーザディレクトリに作成される。
ディレクトリ:~/Library/Preferences/
ファイル名:<アプリ名>.plist

下記はサンプルアプリで作成されたファイル。


plist形式で中身はこんな感じ。バインド時に指定した Key Path が項目名として使われている。



なお Pop Up Button は Selected Value にバインドさせた。
また Textfield は Textfield Cellにバインドさせること。

ソース: BindingPreferences.zip

- - - -
参考情報のように Interface Builder上で扱えるコントロールのバインドは簡単にできる。でもコントローラのコード内で値を参照したい場合はどうするのか?