2010-10-25 7 views
0

Je travaille actuellement sur une application dans laquelle je réalise un catalogue qui contiendra différents produits. Jusqu'à présent, j'ai fait mon menu de démarrage, qui comprend trois boutons (un pour le catalogue, un pour les paramètres et un pour les instructions). Lorsque vous appuyez sur le bouton du catalogue, l'application passe à CatalogueViewController et c'est à partir de ce ViewController que le catalogue doit démarrer.Combinaison de deux applications iphone (1 ViewController, 1 TabBarController)

Outre le menu de démarrage, j'ai écrit l'application pour le catalogue dans une autre application distincte. L'application de catalogue est faite avec un TabBarController, tandis que le menu de démarrage est fait avec ViewControllers réguliers. Ma prochaine étape est de combiner ces deux applications, de sorte que lorsque le bouton de catalogue est pressé, il devrait ouvrir le catalogue. Jusqu'à maintenant, lorsque j'appuyais sur le bouton du catalogue, je créais une instance de mon UICatalogueTableViewController qui est une sous-classe de UITableViewController, et je chargeais mon catalogueView.xib avec.

Le fichier d'en-tête ViewController qui gère quelle vue à afficher:

@class MenuViewController; 
@class UICatalogueTableViewController; 
@class SettingsViewController; 
@class InstructionsViewController; 

@interface IkeaViewController : UIViewController { 
    MenuViewController *menuViewController; 
    UICatalogueTableViewController *catalogueViewController; 
    SettingsViewController *settingsViewController; 
    InstructionsViewController *instructionsViewController; 
} 

@property (retain, nonatomic) MenuViewController *menuViewController; 
@property (retain, nonatomic) UICatalogueTableViewController *catalogueViewController; 
@property (retain, nonatomic) SettingsViewController *settingsViewController; 
@property (retain, nonatomic) InstructionsViewController *instructionsViewController; 

-(IBAction)catalogueButtonPressed:(id)sender; 
-(IBAction)settingsButtonPressed:(id)sender; 
-(IBAction)instructionsButtonPressed:(id)sender; 

@end 

La méthode qui est appelée lorsque vous appuyez sur le bouton de catalogue:

- (IBAction)catalogueButtonPressed:(id)sender{ 
    if (self.catalogueViewController.view.superview == nil) { 
     if (self.catalogueViewController == nil) { 
      UICatalogueTableViewController *catalogueController = [[UICatalogueTableViewController alloc]initWithNibName:@"CatalogueView" bundle:nil]; 
      self.catalogueViewController = catalogueController; 
      [catalogueController release]; 
     } 
     [menuViewController.view removeFromSuperview]; 
     [self.view addSubview:catalogueViewController.view]; 
    } 
} 

Dans mon fichier .xib (CatalogueView.xib J'ai créé un objet TabBarController et mon propriétaire de fichiers a son identité de classe définie sur UICatalogueTableViewController mais je n'arrive pas à connecter les deux, de sorte que TabBarController soit affiché lors de l'exécution de l'application. Le propriétaire des fichiers nécessite une vue. Lorsque j'appuie sur le bouton paramètres ou instructions dans mon menu de démarrage, il n'y a aucun problème lors de l'instanciation de leur ViewController et du chargement des fichiers .xib, car ils ne contiennent qu'une seule vue à afficher. Comment passer de mon menu de démarrage (un ViewController standard) à mon catalogue (TabBarController)?

Merci d'avance.

Répondre

0

C'est une façon très étrange d'avoir créé une application. Cependant, vous devriez être capable de divulguer à un UITabBarController dans une pile de contrôleur de navigation. Je ne vois aucune raison pour laquelle cela ne serait pas possible.

Sinon, vous pouvez importer votre code à partir de votre autre application, puis lorsque vous cliquez sur le bouton, vous pouvez faire [self presentModalViewController:myTabBarController animated:YES]; et cela donnera la même fonctionnalité.

Questions connexes