2012-12-31 50 views
4

我有一個包含3個項目的選項卡欄。每個指向UINavigationController。每個UINavigationController下面有幾個viewControllers。我想在按下任何標籤欄項目時重置回導航中的第一個控制器。選擇tabbaritem時重置爲第一個視圖控制器

我指定我TabBarController實施作爲delegate

self.delegate = self和我的下面(在我的TabBarController實施運行方法效果返回UINavigationControllers

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    NSLog(@"%@", viewController); 
} 

隨着日誌文件顯示如

UINavigationController: 0x8a31a90>2012-12-31 02:16:40.035 Demo[6142:c07] 

當我嘗試popToRootViewController或者這個方法內的popViewController它似乎不起作用。我沒有得到任何錯誤,但我的viewControllers不重置。看來我在這裏犯了一個非常基本的錯誤,但我不知道是什麼。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    NSLog(@"%@", viewController); 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
    [[self navigationController] popViewControllerAnimated:YES]; 
} 

回答

3

您需要在navigationController(viewcontroller)上使用popToRootViewController - 而不是TabViewController(self)。

[viewController popToRootViewControllerAnimated:YES]; 
+0

@damon說什麼,除非你必須首先投射viewController:[(UINavigationController *)viewController popToRootViewControllerAnimated:YES]; – Aky

+0

非常好,謝謝Aky和達蒙。是[(UINavigationController *)viewController popToRootViewControllerAnimated:YES];效果很好。 – user1938847

+0

很高興幫助。一定要將答案標記爲正確。 – damon

1

我不確定這是否有幫助。我有很多麻煩得到這個工作,並發現我需要做到以下幾點:

在根視圖控制器(第一視圖應用程序來到),在.h文件中添加一個委託。

@interface MGMProductsViewController : UIViewController <UITabBarControllerDelegate> 

下面的代碼添加到viewDidLoad中在根視圖控制器(m文件)。

[self.tabBarController setDelegate:self]; 

在根視圖控制器(.m文件)中用下面的覆蓋方法。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    if ([viewController isKindOfClass:[UINavigationController class]]) 
    { 
     [(UINavigationController*)viewController popToRootViewControllerAnimated:NO]; 
    } 
} 

我不能把它歸因於任何人,因爲我找不到合適的代碼。我想我把它拼湊在一起,儘管'[self.tabBarController setDelegate:self]'看起來是它爲我工作的關鍵。

祝你好運。

相關問題