0

私のアプリケーション階層は次のようになっています。

tabBarController >> navigationControllers (multiple) >> viewControllers (multiple)

で特定のイベントが発生したときappDelegateに、navigationControllerの1つで特定のviewControllerをプッシュしたい。今のところ私はこれを持っています:

UINavigationController *myNavigationController = [[(UITabBarController*)self.window.rootViewController viewControllers] objectAtIndex:0];

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
StoreViewController *targetViewController = (StoreViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"StoreViewController"];

[myNavigationController pushViewController:targetViewController animated:YES];

これは、アプリケーションが現在targetViewControllerと同じnavigationControllerにある場合にのみ機能します。アプリケーションのどこにいても機能するようにしたいと思います。ありがとう!

4

1 に答える 1

4

プッシュを実行する前に、プログラムでその特定のナビゲーションコントローラーがあるタブ0に切り替える必要があります。

UITabBarController *tbc = (UITabBarController*)self.window.rootViewController;
tbc.selectedIndex = 0;
UINavigationController *myNavigationController = tbc.selctedViewController;
etc......

上記のコードは、特定のナビゲーションコントローラー(タブ0にあるもの)からtargetViewControllerをプッシュすることを前提としていますが、どのナビゲーションコントローラーがプッシュするかを気にしない場合は、tbc.selectedIndex=0行を削除するだけです。次の行は、現在選択されているナビゲーションコントローラーからプッシュします。あなたの質問から、あなたがどちらを望んでいるのかわかりません。

于 2013-01-08T17:10:35.360 に答える