前へ Xcc>Cocoa 次へ
 これで、メニューを選べばスライダーが設定され、スライダーを動かせばメニューが設定される。ただしスライダーの真ん中あたりまでは、0〜50のいずれかのメニューを選んでくれるが、半ばを越えると100までは未選択状態になるはず。これは selectItemWithTitle の仕様。詳しくはさっきのAPIヘルプに書いてある。メニュー項目にに60〜90を追加すれば、この現象はなくなる。逆に3とか52とか中途半端な値がスライダーで設定されたときは未設定状態にしたい場合は例の
anInt = (anInt / 10) * 10;

て処理を取りはぶけばいい。

 サブクラス化以外に、intValue,SetIntValueを持つ自家製アダプタを間にはさんでみるというのも選択肢の一つ。

ポップアップメニューボタン

自家製アダプタ

MyObject

 今回のような MyObject が単純なケースでは複雑さを増すだけだけど、こういう構成が有効な場合は多い。自家製アダプタ作成は MyObject 作成の応用でなんとかなるので、これも自習。

 ただし自家製アダプタを MyObject に Control+ドラッグ&ドロップしても myAction を設定できない。この場合 MyObject を myOutlet として持っておき、ポップアップメニューボタンからのアクション時に

[outlet myAction:self];

とすることになる。

ラジオボタン

 同じようにラジオボタンも intValue 、 setIntValue の動きが違うのでサブクラス化で対応できる。ただしやらない。興味があれば、やり方はポップアップメニューボタンの応用なので自習するように。

ラジオボタンは少し使い方が複雑だけど、これもInterface builderにも辞書があって

Help>Interface Builder

とすれば出てくるので、これで調べる。

myAction を設定できない

 Interface Builder が myAction を設定できるのはユーザーからの入力を受け付けることができるオブジェクトのみ。

メタル化

まあ、なんとなくメタル化して、今日はこれまで。

 ウインドウを中のスライダーやポップアップメニューボタンが選択されていない状態で Inspector window を出すと NSWindow Inspector となっているので、 Attributes メニューを選んで Has texture をオンにする。

CustomView の追加

 次回は、 CustomView を使ってスライダーで設定した値を元に簡単なアニメーションなんかをやってみたいのう。