2012-03-05 7 views
0

本質的に、ナビゲーションコントローラのサブビューから新しいビューコントローラをプッシュする正しい方法は何ですか。ナビゲーションビューのサブビューからのコントローラのプッシュ

問題であることサブビューはself.navigationController(そのnil

理由は、私は、ナビゲーションバーのビュー&メインビューのために別々のコントローラを必要としますが、両方が新しいコントローラをプッシュする必要がある継承しません。

誰かがこれを行う正しい方法を教えてくれたら、私はこのモデルを変更したいと思います。また

:代表団コントローラがnilあるよう

AppDelegate *del = (AppDelegate *)[UIApplication sharedApplication].delegate 
[del.navigationController pushViewController:vc animated:YES]; 

は動作しません。

+0

nilをされないようNavigationControllerで
2.Embedあなたの現在のViewControllerあなたのViewControllerをプッシュする二つの方法superViewControllerのnavigationController 1.Use
を試すこと* del =(AppDelegate *)[UIApplication sharedApplication] .delegate; [del.navigationController pushViewController:vc animated:YES]; ' はデリゲートコントローラとして動作しません。 – Ryan

答えて

1

UIViewで次のカテゴリを作成します。

@interface UIView (GetUIViewController) 
- (UIViewController *)viewController; 
@end 

@implementation UIView (GetUIViewController) 

- (UIViewController *)viewController; 
{ 
    id nextResponder = [self nextResponder]; 
    if ([nextResponder isKindOfClass:[UIViewController class]]) { 
     return nextResponder; 
    } else { 
     return nil; 
    } 
} 
@end 

ここで、サブビューからスーパービューを取得します。

mySuperView = [mySubView superview]; 

次に、作成されたカテゴリのメソッドを呼び出します。

mySuperViewController = [mySuperView viewController]; 

ここで、このviewControllerを使用して、navigationControllerにアクセスできます。

私は上記のコードとアプローチを試していませんが、うまくいくと思います。 ` AppDelegate:

+0

ありがとう!治療をしても、ちょっとハッキリしているようです – Ryan

1

あなたはnavigationControllerはまた