2012-02-20 28 views

回答

4

有沒有UITabViewController類。我假設你的意思是UITabBarController

設置您的UITabBarController的代表。給委託人一個對導航控制器的參考。比如,也許你會使用你的應用程序委託作爲標籤欄控制器的委託:

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> 

@property (nonatomic, weak) IBOutlet UINavigationController *theNavigationController; 

確保您掛鉤的財產,無論是在你的筆尖或代碼。 然後,在委託,重寫tabBarController:didSelectViewController:方法:

@implementation AppDelegate 

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    if (viewController == self.theNavigationController) { 
     [self.theNavigationController popToRootViewControllerAnimated:NO]; 
    } 
} 
+2

代替與基準進行比較,爲什麼不利用'[的viewController isKindOfClass:[UINavigationController的類]]檢查選擇的viewController的類型',然後類型轉換並對結果執行'popToRootviewController'? – Till 2012-02-20 21:53:46

+0

哎呦,解決了我的頭銜。 – Baub 2012-02-20 21:56:18

+1

@我給出了一個適合這個問題的答案。它有優點和缺點。 – 2012-02-20 22:05:29

1

設置UITabBarViewContoller的委託,並實現其tabBarController:didSelectViewController:,使其調用您的UINavigationControllerpopToRootViewControllerAnimated:當選擇UINavigationController

相關問題