2012-04-07 55 views

回答

13

您試過tabBarController:shouldSelectViewController:委託方法?我希望這能幫助你。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 

    id currentViewController = tabBarController.selectedViewController; 
    return (viewController != currentViewController); 
} 

如果標籤欄控制器的所有視圖控制器都是UINavigationControllers,則應該這樣做。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 

    id nextVC = [(UINavigationController *)viewController topViewController]; 
    id currentVC = [(UINavigationController *)tabBarController.selectedViewController topViewController]; 
    return (nextVC != currentVC); 
} 
+0

我發現的方法,但必須要什麼樣的代碼進去......,那我不知道。 – viral 2012-04-07 12:59:28

+0

好的。看到我更新的答案。 – EmptyStack 2012-04-07 13:07:33

+0

是的,所有的VC都是'UINavigationControllers'。爲('UINavigationController *)'強制轉換的唯一原因,或者僅僅是爲了良好的編程實踐。它也沒有。 – viral 2012-04-07 17:34:47

0

使用像下面將工作

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
    { 
     if(self.tabBarController.selectedIndex==[[self.tabBarController viewControllers] indexOfObject:viewController]) 
      return NO; 
     else 
      return YES; 
    } 
+0

你不需要if-else語句的else部分。如果它返回NO,它不能返回YES。 – CodaFi 2012-04-07 14:55:49

相關問題