2012-02-08 10 views
0

私は3つの項目を持つuitabbarcontrollerを持っています。各項目には独自のナビゲーションコントローラがあります。 たとえば、タブ1では、ユーザーは他のサブビューに移動し、タブ2に変更してから、タブ1に戻ります。タブ1にはサブビューが表示されます。どのように私はサブビューの代わりにルートビューコントローラを押すことができますか? 私uitabbarcontrollerをカスタマイズして持ってされています。それはpushrootviewcontrollerのいくつかの種類を行うには、適切な場所iOS 5タブビューが変更されましたルートコントローラ(ストーリーボード)を押します

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 

のですか? コントローラーの入手方法?

編集:私はのNSLog出力は、デバッガが、poptoルートdoesntの仕事で見ることができ

UITabBarController<UITabBarControllerDelegate, UITabBarDelegate> 

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
    { 
     if (tabBarController.selectedIndex == 0) 
     { 
      NSLog(@"test%@",@"test"); 
[self.tabBarController.selectedViewController.navigationController popToRootViewControllerAnimated:NO]; 
     } 
     } 

を以下に

実装しました。何か案が?

+0

つまり、ユーザーがタブ1からタブ2に切り替えてタブ1に戻ると、最初のタブが最初の表示に戻りますか? – Canopus

+0

はい、それは私が欲しいものです。 –

+0

1つのアプローチでは、[self.navigationController popToRootViewControllerAnimated:NO]を - (void)に追加することもできます。viewDidDisappear – Canopus

答えて

1

okコードは次のようになります。今はそれが私が望むように動作します。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
if (tabBarController.selectedIndex == 0) 
{ 
    if ([viewController isKindOfClass:[UINavigationController class]]) 
     [(UINavigationController*)viewController popToRootViewControllerAnimated:NO]; 
} 
} 
関連する問題