J'essaie faire quelque chose similaire (mais pas exactement comme) l'application email trouvé sur le iPad.contrôleur de navigation multi-niveaux sur le côté gauche de UISplitView avec une petite torsion
Plus précisément, je voudrais créer un onglet basée sur l'application, mais chaque onglet présenterais l'utilisateur un autre UISplitView. Chaque UISplitView contient un affichage maître et un affichage détaillé (évidemment).
Dans chaque UISplitView, je souhaite que le maître soit un contrôleur de navigation multiniveau où les nouveaux contrôleurs UIView sont poussés (ou retirés) de la pile. Ce type de navigation dans UISplitView est l'endroit où l'application est similaire à l'application de messagerie native. Au meilleur de ma connaissance, le seul endroit qui a décrit un "splitviewcontroller" décent dans un uitabbarcontroller est ici: UISplitViewController in a TabBar (UITabBarController)? et j'ai essayé de suivre la réponse acceptée.
La solution acceptée semble fonctionner pour moi (c'est-à-dire que j'obtiens un contrôleur de barre d'onglets qui me permet de basculer entre différents UISplitViews). Le problème est que je ne sais pas comment faire du côté gauche de l'UISplitView un contrôleur de navigation à plusieurs niveaux. Voici le code que j'ai utilisé dans le délégué de mon application pour créer la "vue partagée" initiale à l'intérieur d'un contrôleur de barre d'onglets "(c'est à peu près comme suggéré dans le lien ci-dessus).
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSMutableArray *tabArray = [NSMutableArray array];
NSMutableArray *array = [NSMutableArray array];
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
MainViewController *viewCont = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[array addObject:viewCont];
[viewCont release];
viewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[array addObject:viewCont];
[viewCont release];
[splitViewController setViewControllers:array];
[tabArray addObject:splitViewController];
[splitViewController release];
array = [NSMutableArray array];
splitViewController = [[UISplitViewController alloc] init];
viewCont = [[Master2 alloc] initWithNibName:@"Master2" bundle:nil];
[array addObject:viewCont];
[viewCont release];
viewCont = [[Slave2 alloc] initWithNibName:@"Slave2" bundle:nil];
[array addObject:viewCont];
[viewCont release];
[splitViewController setViewControllers:array];
[tabArray addObject:splitViewController];
[splitViewController release];
// Add the tab bar controller's current view as a subview of the window
[tabBarController setViewControllers:tabArray];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
la classe MainViewController est un UIViewController qui contient la méthode suivante:
- (IBAction)push_me:(id)sender {
M2 *m2 = [[[M2 alloc] initWithNibName:@"M2" bundle:nil] autorelease];
[self.navigationController pushViewController:m2 animated:YES];
}
cette méthode est fixée (par l'intermédiaire de l'interface générateur) à une UIButton trouvés dans MainViewController.xib De toute évidence, le procédé ci-dessus (push_me) est censé créer un deuxième UIViewController (appelé m2) et pousser m2 dans la vue sur le côté gauche de la vue partagée lorsque le bouton UIButton est enfoncé. Et pourtant, il ne fait rien lorsque le bouton est pressé (même si je peux dire que la méthode est appelée).
Réflexions sur l'endroit où je me trompe?
TIA! Êtes vous sûr que MainViewController est une sous-classe de UINavigationController?