2012-05-02 14 views
2

Xcodeでストーリーボードを使用してアプリケーションを作成しました。アプリケーションには、TBCから制御されるUITabBarController(TBC)といくつかのUIViewController(VC)が含まれています。AppDelgateのオブジェクトからViewControllersに参照を渡すには

AppDelegateでは、着信MIDIメッセージ(CoreMidi)を聴くオブジェクト(「myMidi」と呼ぶことができます)を作成します。そこで、このmyMidi-Objectのインターフェイスを自分のVCに実装します。 Interface Builder(IB)の "Relationship"オプションを使用して、TBCにビューを接続しました。

IBで作成されたすべてのVCは、自分のVCクラスのインスタンスです。私がbevoreに言及したように、このクラスでは、AppDelegateで作成したmyMidi-Objectのインターフェイスを実装します。 したがって、すべてのVCインスタンスはmyMidi-Objectのアドレスを保持し、AppDelegateで作成された唯一の参照が必要になります。

私はどのように現在のVCまたはこの参照をVCクラスに渡すために現在表示されているTBCにアクセスできますか?

他の方法でこの問題を解決できますか。私はAppDelegateのどこかでこれを行う必要がありますか、TBCでも参照を保持して、VCが作成されるときに新しいVCに渡すべきですか?

答えて

1

私が正しく理解していれば、あなたのMyMidiクラスの現在の(唯一の)インスタンスをあなたのVCに利用できますか?

インスタンスが1つしかない場合は、MyMidiをシングルトンクラスにして、同じオブジェクトを常に返す(遅く初期化する)クラスメソッドを+ (MyMidi *)sharedInstance;にしてください。そうすればどこからでもアクセスできます。

Cocoa/Cocoa Touchでシングルトンを実装する方法については、this questionを参照してください。

+0

ありがとう、私はシングルトンを試してみてください。 – user1366036

+0

**インスタンスが1つだけ必要な**と**インスタンスが1つしか作成されないことが保証されている間に違いがあります。インスタンスを1つしか作成できないようにする必要がない限り、シングルトンは使用しないでください。 –

0

nsdefaults setObjec:forKey:を使用してオブジェクトを渡し、必要な場所に移動します。または、不動産のプロパティを作成してアクセスしてください。

AppDelegate* appDelegate = (TappAppDelegate*) [[UIApplication sharedApplication] delegate]; 
appDelegate.object = yourObject;