2010-01-13 5 views
6

J'ai une application basée sur une barre d'onglets avec une navigation sur chaque élément de la barre d'onglets. Lorsque je navigue vers une autre vue sur un élément de la barre d'onglets et que je clique sur l'élément de la barre d'onglets, le contrôleur de la vue racine sur cet élément de la barre d'onglets est appelé. C'est comme PopToRootView. Pouvons-nous désactiver cette situation?Désactiver la barre d'onglets en accédant à la vue racine

Répondre

3

Bien qu'ils disent que vous n'êtes pas censé sous-classer UINavigationController, vous pouvez ce que vous voulez en faisant une sous-classe de UINavigationController et en remplaçant la méthode - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;. Faire ceci (et ne pas appeler le super popToRootViewController) empêchera les contrôleurs de vue de sauter lorsque vous cliquez sur l'élément de la barre d'onglets. Cela pourrait vous causer des problèmes, mais j'espère que cela fonctionne pour vous.

+0

Pourriez-vous me dire ce que signifie - (NSArray *) popToRootViewControllerAnimated: (BOOL) animé; en passant comme 'NON' dans le paramètre animé. – Himanshu

+0

@mjdth Est-ce que vous savez par hasard que le problème n'est pas quelque chose comme "App se faire rejeter par Apple"? Sinon, cela fonctionne comme un charme. Merci pour votre conseil. –

6

Oui, vous pouvez désactiver l'popToRootViewController automatique en mettant en œuvre la méthode UITabBarControllerDelegate sur votre contrôleur de vue:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    if(self.navigationController == viewController) { 
     return NO; 
    } 
    return YES; 
} 

Merci à: Disable action - user taps on tabbar item to go to root view controller

2
  1. Inclure UITabBarControllerDelegate dans votre fichier d'en-tête.
  2. essayez ceci:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
        { 
         if(bool_youDontWantPopToRootView) 
          return (tabBarController.selectedViewController != viewController); 
         return YES; 
        } 
    

Pour bool_youDontWantPopToRootView, vous pouvez ajouter la condition en quand vous voulez qu'il se comporte comme comportement par défaut.

1

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; lorsque vous passez « NON » dans l'argumentation d'animation vous serez dirigé vers vue racine sans aucune animation

vous ne avez pas besoin d'utiliser cette méthode pendant que vous tapez sur l'un barre d'onglets son comportement par défaut du contrôleur de navigation qu'il maintient sa propre pile de VCs

Questions connexes