-2

私はこのように作成されたtabbarcontrollerアプリケーションを持っていました

UITabBarcontroller (UIWindow's rootViewController)
    ->UINavigationController (first tab)
       -->UIViewController
    ->UINavigationController (second tab) 
       -->UIViewController

ナビゲーションバーには、別のView Controllerをself .navigation Controllerにプッシュするボタンがありましたが、今は他のNavigation Controllerからも同じアクションが必要です。そのため、トップ ビュー コントローラーであるナビゲーション コントローラーにプッシュする必要があります[self.navigationController pushViewController:viewcontroller animated:NO];。タブバー コントローラーに存在するナビゲーション コントローラーを、追加する必要がある方法で置き換える必要があります。これ?

4

2 に答える 2

2

現在表示されている UInavigationController への参照を保持するよりも簡単です (UITabBarController デリゲートからの参照を保持する必要がありますtabBarController:didSelectViewController:) 。

したがって、AppDelegate に変数を追加します。

UINavigationController *navController;

それから :

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if (viewController.navigationController)
        navController = viewController.navigationController;
}

次に、この方法でプッシュを行います。

if (navController)
   [navController pushViewController:viewcontroller animated:NO];
于 2013-10-16T12:43:53.277 に答える
0

したがって、最初に にアクセスする必要がありますTabBarController。どこかで手に入ると思いますAppDelegate

次に、次のように呼び出すことができます。

UIViewController *ctrl = myTabBarCtrl.selectedViewController;
[ctrl.navigationController pushViewController:viewcontroller animated:NO];
于 2013-10-16T12:45:01.470 に答える