2011-08-06 2 views
0

私はタブバーとして機能するツールバーを持っている私のAPのための奇妙なデザインパターンを持っています。基本的に私はすべての私のビューコントローラにこのツールバーを追加し、ツールバーには自分のアプリケーション内の3つの異なるナビゲーションコントローラへのポインタが含まれています。ツールバーのボタンの1つを押すと、現在ウィンドウにあるナビゲーションコントローラを削除し、ユーザーが選択したナビゲーションコントローラを追加できるようになります。私の問題は、スーパービューに新しいnavcontrollerを追加する方法がわかりません。私は、アプリケーションデリゲートオブジェクトをインスタンス化し、それをそれに追加できますか?または、私のアプリケーションデリゲートからツールバーにクラス変数としてポインタを送る必要がありますか?どんな助けもありがとう。スーパービューをデリゲートの外から設定するにはどうすればいいですか?

答えて

1

これについては、あなたのアプリケーション代理人でUINavigationControllerの切り替えを管理するのが最善の方法だと思われます。あなたは、このプロセス中にここでやる必要があるすべてのクリーンアップを調べることもできます。スイッチアウトを取得UINavigationController Sの有限数がある場合は、私はちょうどこのの世話をするために、いくつかの方法があるかもしれません:

アプリケーションデリゲート.hファイル:

@property (nonatomic, retain) UINavigationController *currentNavController; 

アプリケーションデリゲートの.mファイル:

@synthesize currentNavController = _currentNavController; 

    - (void)loadNavControllerOne 
    { 
     self.currentNavController = ...; // Set up your new controller 
     self.window.rootViewController = self.currentNavController; 
    } 

    - (void)loadNavControllerTwo 
    { 
     // Similar to -(void)loadNavControllerOne 
    } 

念のためだが、あなたは考えを得る。しかし、これらのコントローラ間で状態を共有する必要がある場合は、これが変更されます。あなたは?

EDIT:アプリデリゲートにアクセスするには、[[UIApplication sharedApplication] delegate]に電話してください。

+0

ありがとうございます。ただし、ツールバーからアプリケーションデリゲートにアクセスするにはどうすればよいですか?私のアプリケーションデリゲートの新しいインスタンスを作成する必要がありますか?または、アプリケーションデリゲートからツールバー内のクラス変数へのポインタを送信する必要がありますか? –

+0

私の答えを更新しました... – GarlicFries

+0

ありがとうございます、ありがとうございます –

関連する問題