2010-09-18 8 views
5

J'ai une application avec UITabBarController avec une sous-vue UINavigationController, qui contient une vue de table. Je veux être en mesure de désactiver le UITabBarController avec un UIToolbar pour un contrôleur de vue spécifique lorsqu'une cellule est sélectionnée.Remplacer UITabBar avec UIToolBar

Voici un exemple d'une autre application, qui réagit de la même manière:

Initial view with UITabBarController and UINavigationController

Lorsque vous sélectionnez une vue de table cellulaire:

Detailed view with UIToolbar

Le contrôleur de vue détaillée (deuxième écran) doit remplacer le parent UITabBarController avec un UIToolbar. Est-ce que quelqu'un sait comment je peux faire cela?

Répondre

5

De UIToolBar on top of UITabBar?:

Vous pourriez être en mesure d'ajouter la barre d'outils en tant que sous-vue de la fenêtre clé:

[[[UIApplication sharedApplication] keyWindow] addSubview:toolbarView] 
1

Bien que @Hector Ramos réponse est correcte d'un.

Mais à côté de cela, on peut faire la même chose dans l'autre sens.

juste faire l'objet d'un fichier DelegateClass & utiliser ceci:

[DelegateClassObj.window addSubview:toolbar]; 
5

Pourquoi ne pas: detailController.hidesBottomBarWhenPushed = YES;

avant de pousser à la navigationstack? La vue de votre contrôleur de détail peut avoir la barre d'outils ajoutée via le code ou IB.

+0

C'est de loin la meilleure option. Bien que les autres réponses fonctionnent, celle-ci l'accomplit le mieux. Le problème avec les autres méthodes est qu'elles ne supportent pas la rotation. Par conséquent, si vous souhaitez prendre en charge l'autorotation, utilisez simplement hidesBottomBarWhenPushed dans votre vue avant de l'insérer dans la pile NavigationController. Cela permettra à votre nouvelle vue d'occuper tout l'écran. – jschmidt