前へ | Xcc>Cocoa | 次へ |
2、第三者を用意し、そちらと連絡しあう。この第三者は1から作ることになる。つ〜か、ウィンドウに置くわけにもいかんし。第三者とかビジュアル的にわからんし。 ただし、基本はやっぱClass作成だからMainMenu.nib(English)ウィンドウのClassesタブを使うわけだ。というわけでリストを左端までスクロールさせると現れるのが、 NSObjectCocoaで扱うObjective-C用オブジェクトは、NSObjectからサブクラス化されないといけないので、1から作る場合でも必ずNSObjectからサブクラス化する必要がある。 例によって Classes>Subclass NSObjectはい、MyObjectのできあがり〜。 |
NSObjectあらゆるオブジェクトの祖先。テキストフィールドもスライダーも上をたどるとNSObjectに行き着く。 |
喧嘩売っとんのかInterfaceBuilder。 リストからMyObject選んでからClassesメニュー開くと... |
アクションの追加ここらへん、あきたので書きません。スライダーやテキストフィールドでやったようにアクションを追加し、これにスライダーやテキストフィールドを結びつけるだけです。 と言いたいんだけど、ひとつ大問題。ね〜からMyObject。ドロップしようがね〜し。 MainMenu.nib(English)ウィンドウのClassesタブのリストにある MyObject にドロップしようとして、スライダーやテキストフィールドをControl+クリックしてClassesタブのリストにドラッグしようとした君。そうだね、ClassesタブがInstancesタブに切り替わられるね。そ〜なんすよ切り替わるんすよ。 でも、ここに重大な手がかりあるわけですわ。もう一度 MainMenu.nib(English) ウィンドウの Classes タブのリストにして MyObject を選択してから Classes メニューを開くと出てくる Classes>Instantinate MyObjectこいつを選ぶと〜MyObjectきた〜♪ |
Instantineteインスタンス化。クラスが分類であるのに対し、その具体的な個体がインスタンス。カップ麺というクラスに対し、カップヌードルカレー味が一つ、シーフード味が2つあれば、カップ麺クラスのインスタンスが3つあると表現できる。 |
解除。 |
つ〜わけで、こいつにスライダーもテキストフィールドも Control + ドラッグ&ドロップだ。ただしスライダーもテキストフィールドも myAction はお互いに結びついたままなので、これを解除しておく。 解除するにはテキストフィールドならテキストフィールドを選択して Inspector ウィンドウを出して Connections メニュー & Target / Action タブのリストにある myAction: を選んで右下の Disconnect (つなぐときは Connect になってたやつ)ボタンを押す。 スライダーも同じように解除して、両方とも MyObject に Control + ドラッグ&ドロップする。 二重に結びつけても問題ない。前のソースでもあったように、送り手は識別できる。というかテキスト作ってなかった。MainMenu.nib (English) ウィンドウの Classes タブのリストにして MyObject を選択してから Classes>Create Files for MyObjectでできた MyObject.mをXcodeで開くと
ちゃんとありますなmyAction。でも、またここで問題なわけだ。 sender で送り手がわかっても、それに対応する相手がわからない。いや、わかってるけどmyAction内で指定する方法がない。 self は自分を指していたけど、あれはスライダーやテキストフィールドだから意味があったわけで、 MyObject では意味がない。 この場合、 sender がテキストフィールドならスライダー、スライダーならテキストフィールドを更新する必要があるわけで、つまり MyObject はスライダー、テキストフィールドを認識している必要がある。 その方法が... |