2012-04-07 15 views

Antwort

13

Sie haben versucht, TabBarController: shouldSelectViewController: Delegatmethode? Ich hoffe, das sollte dir helfen.

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

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

Wenn alle View-Controller des Tab-Bar-Controllers UINavigationControllers sind, sollten Sie es so machen.

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

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

ich diese Methode gefunden, aber was für Code in es gehen muss ..., dass ich nicht sicher bin. – viral

+0

In Ordnung. Siehe meine aktualisierte Antwort. – EmptyStack

+0

Ja, alle VCs sind 'UINavigationControllers'. Irgendein bestimmter Grund, um '' (UINavigationController *) ''zu schreiben oder nur aus Gründen der guten Programmierpraxis. Es funktioniert auch ohne. – viral

0

Verwendung wie unten wird es

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

Sie benötigen den else-Teil der if-else-Anweisung nicht. Wenn sie NEIN zurückgibt, kann sie nicht JA zurückgeben. – CodaFi

Verwandte Themen