前へ | Xcc>Cocoa | 次へ |
アウトレットの作成 |
アウトレットめざとい人は気づいてる思うけど Classes > Add Action to MyObject の上に Classes > Add Outlet to MyObject てメニューがあるわけですわ。 Classes > Add Outlet to MyObjectで、一個アウトレット完成。アウトレットはアクションと違い1対1で結びつけないといけないのでスライダー、テキストフィールド2つ用意する必要があるのでもう一回 Classes > Add Outlet to MyObjectとする。 |
アウトレット出口、電気のコンセント。ただし、Cocoaでは出力のみの利用に限定されない。実際のオブジェクトへ伸びるリモート線への差し込み口とでも考えるべきか? |
向きが逆になるんだな。 例によってConnectボタンを押して結びつけ。 |
これで、myOutlet、myOutlet1 の2つができたので、それぞれをスライダー、テキストフィールドと結びつける。今度は MyObject からスライダー、テキストフィールドに Control +ドラッグ&ドロップをおこなう必要がある。
として、これでいったんMyObject.mとMyObject.hを更新することにする。ということでもう一回 Classes>Create Files for MyObjectとして出てきたダイアログでChooseボタンを押すと、いきなり、 なんて聞かれるわけだけど、これは Overwrite ボタンを押す。 MyObject.h、MyObject.m のどちらにも出るので、どちらも Overwrite ボタンを押す。 |
Overwrite以前にCreateした MyObject.m 、MyObject.h が存在しているので、このテキストをどうあつかったらいいかを聞いている。無条件に書き換えがOverwrite。 Merge は合成。当然合成用の指示が必要となりXcodeではFileMerge.appが呼び出される。 |
とりあえず、別のスライダーに差し替え〜 |
でもって Xcode で MyObject.h を見ると
となってるわけだ。これで MyObject.m 側の
で、myOutlet、myOutlet1が使えるようになったので
と書いて実行すると、お互いの myAction は解除したのにちゃんと動くわけですわ。 試しに Interface Builder に戻ってテキストフィールドを削除(テキストフィールドを選んだ状態でEdit>Deleteメニュー実行)。 代わりに別のスライダーを MyObject の myAction、myOutlet1 に結びつけ(下の絵は myAction への結びつけ、逆方向で myOutlet1 に新しいスライダーを結びつける。 myOutlet1 はテキストフィールドが削除された段階で空になっている) Xcodeで実行すると〜 連動するわけですね〜。やった〜、いっけ、いっけ、どんどん、いったれ〜と速攻でポップアップメニューに差し替えた人は、あれっと思うことになります。 それは次回のお楽しみ。 |
if (sender == myOutlet)...senderがテキストフィールドならスライダー、スライダーならテキストフィールドを更新するっていう処理なんだけど、興味がある人はこれ。 |