2010-11-01 4 views
0

Je veux placer deux vues côte à côte comme ils l'ont fait dans l'application MAIL pour l'ipad. Est-ce possible avec UINavigationController?ios4 sdk ipad - Peut-on mettre deux VIEWS dans la fenêtre?

Je voudrais placer deux UINavigationController côte à côte

Ne vous inquiétez pas sur la syntaxe, je veux juste savoir s'il est possible

UINavigationConroller *left; 
UINavigationController *right; 

[WIndow addSubView: left]; 
[WIndow addSubView:right]; 
+1

Pour l'iPad, il est un contrôleur de vue partagé, pas deux contrôleurs séparés –

+0

Avez-vous l'essayer? –

Répondre

1

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; 
} 
+0

Si j'ai deux vues UINavigationController et les ajouter à la fenêtre; Puis-je les faire asseoir côte à côte? certains comment les vues n'ont pas l'air de charger ou de prendre tout l'écran. Je n'utilise pas une plume mais je les ajoute manuellement dans le code. – Arcadian

+0

Vous devriez vraiment utiliser un UISplitViewController. Je vais ajouter un exemple à la réponse, car il est difficile de formater les commentaires ... – Tommy

Questions connexes