2012-02-07 2 views
0

cela peut sembler simple, mais de toute façon je ne suis pas en mesure de sortir de cela. J'ai créé une application vide, ajouté deux éléments tabBar en les créant dans les fichiers AppDelegate.h et AppDelegate.m. Maintenant, pour mon deuxième élément tabBar, lorsque l'utilisateur clique sur le deuxième élément tabBar, je veux afficher un popOverController. J'ai créé par programme cela, en suivant ce lien Link. Maintenant, mon problème est que je veux utiliser le contrôleur de navigation dans mon code où j'ai créé mon popOverController (AppDelegate.m) de sorte que dans mon popOverController.m, je veux utiliser le NavController pour pousser d'autres vues. Si quelqu'un a un moyen simple de réaliser cela, serait apprécié.UIPopOverController avec UINavigationController avec Xcode 4.2.1

Merci

+0

Vous ne devriez pas avoir besoin de créer une sous-classe de PopOverController, sauf si vous créez votre propre interface utilisateur. – twilson

+0

Regardez la documentation d'Apple Human Interface Guidelines d'Apple, elle devrait vraiment être parfaitement adéquate pour réaliser ce que vous voulez. Cela semble assez trivial, à moins que je ne manque quelque chose? – twilson

Répondre

1

Je suis un peu confus où votre problème est. Ce que vous essayez de faire est possible et devrait être simple. Si votre problème est que la vue suivante n'est pas poussée c'est parce que dans popoverController vous n'avez pas accès à self.navigationController. Solution si simple, créez une variable UINavigationController et passez navigationController à votre popover ou utilisez des notifications pour transmettre quelle vue repasser à votre AppDelegate.

EDIT

Vous pouvez l'utiliser pour écouter les notifications:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(popOverViewControllerSelected:) name:@"popOverViewSelectedViewToPush" object:someObjectTellingYouWhatViewToPush]; 

Ensuite, utilisez cette option pour envoyer les notifications:

[[NSNotificationCenter defaultCenter] postNotificationName:@"popOverViewSelectedViewToPush" object:@"ViewController1"]; 

Le sélecteur serait le nom de votre fonction (Je viens de mettre un nom descriptif "popOverViewControllerSelected") et l'objet devrait être des informations sur ce que viewController à pousser (c.-à-d. 1,2,3 ou @ "view1"). Ensuite, vous avez besoin:

- (void)popOverViewControllerSelected:(id)sentObject 
{ 
    // If your passing an NSNumber could use a switch 
       switch ((int)sentObject) { 
      case 0: 
       //Push This view 
       break; 
      case 1: 
       //Push that view 
       break; 
      case 2: 
       //Push someother view 
       break; 
      default: 
       break; 
     } 
} 

L'autre façon dont je parlais est en vous popOverViewController.h ajouter

@interface ......... 
{ 
    UINavigationController *navController; 
} 
@property (nonatomic, retain) UINavigationController *navController; 

En vous popOverViewController.m ajouter:

@synthesize navController; 

Ensuite où vous ajoutez le popOverViewController ajoutez simplement:

[popOverViewController setNavController:self.navigationController]; 

Et maintenant dans votre PopOverViewController vous pouvez appeler:

[navController pushViewController:someViewController animated:YES]; 

Mais je recommande de faire la première option.

+0

Salut Jaybit, votre solution semble convaincante, pouvez-vous s'il vous plaît fournir un exemple de code pour une meilleure compréhension que je suis novice à IOS. – 125369

+0

J'ai modifié mon message pour avoir plus d'informations et de code. L'idée principale ici est d'avoir accès au NavigationController. La première partie est à travers les notifications, la seconde est en passant le navigationController à la popover. – Jaybit

+0

merci pour l'info précieuse – 125369

Questions connexes