UIWindow hérite directement de UIView, il est donc possible de Ajoutez-y plusieurs objets, mais si vous ajoutez plusieurs contrôleurs de vue, un seul d'entre eux recevra des événements de rotation.
Le moyen correct d'effectuer une présentation de type Courrier consiste à utiliser un UISplitViewController, qui gère automatiquement la transition entre deux modes Vue et Affichage. Le modèle Xcode pour une 'application basée sur la vue partagée' va même vous mettre en place de sorte que vous ayez un bouton pour voir la tableview gauche comme un UIPopoverController si vous êtes en portrait.
EDIT: exemple de code, avec un contrôleur de vue partagé:
// a tiny little method to vend a new navigation controller; following Cocoa patterns, because it
// has 'new' in the name it vends an owning reference (ie, not autoreleased, retain count +1)
- (UINavigationController *)newController
{
UITabBarController *tabBar = [[UITabBarController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabBar];
[tabBar release];
return navController;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// generate a split view controller
UISplitViewController *splitView = [[UISplitViewController alloc] init];
// grab a couple of navigation controllers
UINavigationController *navController1 = [self newController];
UINavigationController *navController2 = [self newController];
// add the navigation controllers to the split view controller
splitView.viewControllers = [NSArray arrayWithObjects:navController1, navController2, nil];
[navController1 release];
[navController2 release];
// and put the whole thing on screen
[window addSubview:splitView.view];
[window makeKeyAndVisible];
return YES;
}
Pour l'iPad, il est un contrôleur de vue partagé, pas deux contrôleurs séparés –
Avez-vous l'essayer? –