2011-11-15 52 views
0

我有一個iPhone應用程序有四個選項卡。在選項卡1上有一個UINavigationController。用戶可以在這堆視圖中深入三層。如何在用戶處於不同標籤時popToRoot在一個選項卡上?

假設用戶轉到導航選項卡1的級別2,然後切換到選項卡3。是否有任何方法可以製作用戶可以按下的按鈕,然後popToRoot導航控制器在選項卡1上(後面場景),而他們仍然在選項卡3?那麼當觸摸Tab 1時它們又會在根級?

我不希望它在根級別每次他們觸摸Tab 1時,只有當他們觸摸Tab 3上的該按鈕時,它纔會將Tab 1彈出到根級別。

+0

你可以嘗試做的'-viewWillDisappear',也許這將通知何時彈出它(例如標籤被切換)。 –

回答

1

只要您有引用,就可以將消息發送給任何有效的對象。如果您的應用程序代理擁有的UITabBarController,並在每個的UITabBarController視圖控制器是一個UINavigationController那麼在任何地方你的應用程序,你可以做到以下幾點:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication].delegate; 
UINavigationController *navController = [appDelegate.tabBarController.viewControllers objectAtIndex:indexOfNavController]; 
[navController popToRootViewController:NO]; // animation not needed but could be YES 
+0

經過一些代碼更改後工作。謝謝! –

1

swift語言。把這段代碼放到AppDelegate

添加UITabBarControllerDelegateAppDelegate

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController){ 
    if let navController = viewController as? UINavigationController{ 
     navController.popToRootViewControllerAnimated(false) 
    } 
} 
相關問題