2011-12-28 6 views
0

ビュー1、ビュー2、ビュー3、ビュー4、ビュー5などの複数のビューがあり、ビュー5が現在のビュー(上にある)であるナビゲーションスタックにある場合、どのようにすることができますかview5のコントローラのview3で書き込まれたメソッドにアクセスしますか?それはview5のコントローラでview3のコントローラのインスタンスを作成し、メソッドを呼び出すように行われますか?しかし、それは私が信じている理想的なアプローチではありません。このシナリオのための最良のアプローチは何ですか?UIViewController階層

+0

呼び出すメソッドは何ですか? –

+0

これはちょうど他のインスタンスメソッドです。 – user1119724

+0

私が釣っているのは、メソッドのスコープです。基本的に、view3のメソッドが複数の場所で必要な一般的なメソッドである場合、おそらくView Controllerに属していないが、いくつかのユーティリティクラスに属している可能性があります。 –

答えて

0

あなたは

NSMutableArray *activeControllerArray = [self.navigationController.viewControllers mutableCopy]; 

Controller3 myController; 
For(int i = 0, i <[activeControllerArray count], i++) { 
    if([[activeViewController objectAtIndex:i] isKindOfClass:[Controller3 class]) { 
     myController = [activeViewController objectAtIndex:i]; 
    } 
} 

今あなたが欲しいのアクションを実行することができますstack-ナビゲーションコントローラにアクセスすることによって、それをアクセスすることができます。

0
NSMutableArray *controllers = [[self.navigationController.viewControllers mutableCopy] autorelease]; 

ABCController *controller = [controllers objectAtIndex:2]; //ABCController is the name of conroller class 
[controller methodName] ; 

このアプローチは、私がVIEW1は、VIEW2、...ビュー5は、派生元となる基本クラスを作成することをお勧め

0

動作するはずです。基本クラスには、このメソッドが含まれており、すべてのクラス(view1、view2、...)にアクセスできるようにします。