2011年5月1日日曜日

Cocoa Tabbed Interface KVOとバインディング

Tab関連ほぼ完成。見た目がアレなのはおいおいなんとかしたいところ。いやこれ、本当に大事なところで、見た目がしょぼいと作る気がなくなってしまうので、もう少しCoolにしたいですな。

TabBarの下に、tablessなNSTabViewをくっつけて、この2つをTabBarControllerで管理する構成にしてみた。xibファイルはこんな感じ。


tabが追加されるときにNSTabViewItemも同時に挿入する。tabの現在のアクティブなindexをkeyにして、キー値監視でNSTabViewのselectionと同期をとっている。

NSTabViewItemにoutlineViewをのっけたViewを載せて、今日のところはここまで。




キー値監視、KVOはあちこちで解説を読んでよくわからなかったが、実際に使ってみれば「なーんだ」というほど簡単でウルトラ便利であることがわかった。
「他のクラスのオブジェクトの、メンバ変数の変更をいつでも通知してもらえる」、という感じでありましょうか。これがNotificationを使うとなると、メンバ変数の値を変更するたびにNotificationをPostしなければいけないが、KVOなら一度addObserverしておけばOK、と。

これをInterfaceBuilderだけでやってしまおう、というのがつまりCocoaバインディングだったのね。
もちろん、
詳解 Objective-C 2.0 改訂版
荻原 剛志
ソフトバンククリエイティブ
売り上げランキング: 15847
この本の解説がなければかなり苦労したであろうと思われる。必読書ですな、荻原本は。欲をいえばもうちょっと詳しくひとつひとつのAPIの用例とかもあると・・・ってそれじゃあ倍の厚さになってしまうか。

0 件のコメント:

コメントを投稿