2010-07-22 8 views
3

La création d'une nouvelle application basée sur le modèle SplitViewController fonctionne parfaitement dans la vue éclatée.Meilleure pratique d'affichage de la vue modale au-dessus de UISplitViewController

Mon écran principal doit être un 'menu' non-splitview. J'essaie de comprendre la meilleure pratique pour en ajoutant ce 'mainMenu' modalement au-dessus du splitViewController. (Ensuite, soit pousser d'autres points de vue non fractionnés au-dessus du mainMenu ou retirer pour révéler et utiliser le UISplitViewController.)

J'ai essayé:

[self.navigationController presentModalViewController:mainMenu animated:NO]; 

Et

[self presentModalViewController:mainMenu animated:NO]; 

Dans le viewWillAppear et méthodes viewWillLoad pour rootViewController & detailViewController. Dans les deux cas, le code s'exécute sans erreur, mais le menu principal n'apparaît pas, detailViewController et rootViewControllers apparaissent.

(j'ai créé une sortie de la NavigationController dans le fichier main.xib au DetailView NavigationController, mais cela ne change rien.)

j'ai pu faire ce travail en utilisant, qui fonctionne, mais il semble que c'est incorrect.

iPad_Prototype_SplitAppDelegate *delegate = (iPad_Prototype_SplitAppDelegate *) [ [UIApplication sharedApplication] delegate]; 

[delegate.splitViewController.view addSubview:mainMenu.view]; 
[delegate.splitViewController.view bringSubviewToFront:mainMenu.view]; 

Je l'ai vu de nombreuses réponses en disant à présenter une telle vision de couverture semblent modalement, mais je ne peux pas trouver le bon endroit ou la configuration dans la configuration splitViewController. Merci pour toute aide ou information.

Enfin, cette approche est-elle incorrecte, est-ce que je devrais juste changer le detailViewController et le faire passer en plein écran en mode portrait et ne pas ajouter l'élément de menu pour le contrôleur racine?

+0

Avez-vous essayé viewDidAppear? –

+0

Je l'ai fait (comme je l'ai noté dans la description.) Je suis sûr que je manque quelque chose ... cela fonctionne également après le chargement. c'est-à-dire si j'ajoute un appel de méthode à exécuter 0,01 secondes après viewWillAppear alors cela fonctionne (mais vous voyez la transition.) – joelm

+0

Avez-vous trouvé une solution? – Justin

Répondre

1

Votre splitViewController est-il dans l'AppDelegate comme l'exemple et est-ce que cela vous aidera?

//AppDelegate.m 
- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

MyController *myCont = [[MyController alloc] initMainMenu]; 
// mess around with myCont.view.modalPresentationStyle; 

[myCont setModalDelegate:self]; 
// Create a delegate (<ModalControllerDelegate>) to dismiss view when done 

[self.splitViewController presentModalViewController:myCont animated:NO]; 
[myCont release]; 
} 

// for completion sake 
-(void)modalViewDismiss:(MyController *)modalView { 
    [self.splitViewController dismissModalViewController:YES]; 
} 
+0

Dans une application utilisant des storyboards, presentModalViewController ne semble pas fonctionner lorsqu'il est appelé depuis AppDelegate. – radven