2009-09-25 6 views
1

Mon application iPhone est basée sur une barre d'onglets, mais je souhaite déclencher une action qui désactive complètement la vue du contrôleur de la barre d'onglets et remplace tout ce qui apparaît dans la fenêtre par un autre fichier XIB. Je suppose que cela doit être fait dans le délégué de l'application (puisque c'est la classe "chef"), mais je ne sais pas la bonne façon de procéder à partir de là. Est-ce que quelqu'un sait comment faire ce que j'essaie de faire?Comment changer XIB dans une application de barre d'onglets?

Merci d'avance!

Répondre

0

Votre contrôleur de vue à onglets pourrait avoir sa méthode d'action, tel que -(IBAction)onChangeView et cette méthode appelle une méthode sur le [[UIApplication sharedApplicaton] delegate], tel que -(void)toggleScreen.

-(IBAction)onChangeView:(id)sender 
{ 
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [delegate toggleScreen]; 
} 

ensuite dans votre application méthode déléguée faire quelque chose comme ceci:

-(void)toggleScreen 
{ 
    [[[window subviews] objectAtIndex:0] removeFromSuperview]; 
    [window addSubview:otherView]; 
} 

Il peut être différent si vous avez besoin de transitions, cependant.

0

Vous n'avez pas vraiment besoin d'aller jusqu'au délégué de l'application. Vous pouvez facilement supprimer vos vues et contrôleurs existants et ajouter de nouvelles vues. Cela dépend vraiment de ce que vous faites. Vous pourriez, par exemple, temporairement mettre de côté la structure de vue existante et aller avec quelque chose de totalement différent, et revenir au schéma d'origine si vous voulez (je ne suis pas sûr de l'expérience de l'utilisateur si).

Dans mes applications, j'ai généralement un contrôleur de vue racine ou j'utilise ma fenêtre principale pour ajouter des vues et en supprimer des vues. Certaines vues ajoutent d'autres vues à elles-mêmes ou transforment une autre vue dans la vue racine ou la fenêtre principale. Certaines vues se ferment pour révéler la vue ci-dessous. Les options sont illimitées et dépendent de vos besoins et de votre architecture.

0

Merci les gars! Nick, c'est juste le code dont j'avais besoin. Au cas où quelqu'un trouverait cela pratique, voici le code que j'ai utilisé pour ajouter une animation pour changer la vue. Il suffit de mettre cela dans une méthode dans le délégué de l'application:

AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES]; 
[[[window subviews] objectAtIndex:0] removeFromSuperview]; 
[window addSubview:[anotherViewController view]]; 
[UIView commitAnimations]; 
Questions connexes