Question

J'écris un UITabBarController personnalisé afin de pouvoir contrôler totalement l'apparence de la barre d'onglets. Tout fonctionne, alors j’ai un tableau de contrôleurs de vue qu’il gère.

Le contrôleur a une vue principale qui remplit l’écran, et à l’intérieur de celui-ci, une vue UIV apparaît au bas de la barre de tabulation. Cette vue de la barre d’onglet comporte un bouton pour chaque contrôleur de vue. Lorsque des boutons sont actionnés, j'ajoute la vue du contrôleur de vue à la vue principale et définit son cadre de manière à ne pas couvrir la vue de la barre d'onglets:

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);

Tout cela fonctionne bien et je peux très bien naviguer entre les contrôleurs de vue. Cependant, lorsque je présente un contrôleur de vue modal, puis que je le ferme, la vue du contrôleur de vue actuel devient plein écran et recouvre ma barre de tabulation! J'ai essayé de définir les masques de redimensionnement automatique pour ne pas les redimensionner, mais cela continue.

J'ai également essayé d'ajouter la vue des contrôleurs de vue au bas (sous la barre d'onglets) en utilisant:

[self.view insertSubview:controller.view atIndex:0];

Mais lorsque je le fais, la barre d'onglets est même visible au-dessus des vues modales! Ce qui est étrange. Je pense qu'il y a quelque chose que je ne comprends pas, alors je serais reconnaissant si quelqu'un peut expliquer ce qui me manque!

Merci,

Mike

Était-ce utile?

La solution 3

J'ai réussi à trouver un meilleur moyen de contrôler l'apparence de la barre d'onglets en insérant simplement des sous-vues en haut de la barre d'onglets du contrôleur d'onglets. Cela a fonctionné un régal!

Autres conseils

Essayez de définir

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

dans la méthode viewWillAppear du contrôleur

Essayez ceci. Je pense que vous voulez des contrôleurs de vue dynamiques dans le contrôleur de la barre d’onglet.

-(void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
tabBarController.delegate=self;
tabBarController=[[UITabBarController alloc] init];

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil];
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil];
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil];

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease];
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease];
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease];
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease];
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease];

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil];

nvCtr0.tabBarItem.enabled=NO;
nvCtr4.tabBarItem.enabled=NO;

[window tabBarController.view];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top