2009-04-25 14 views
0

J'ai un bouton sur une vue. Quand je clique dessus, il faut charger une autre vue, une avec un contrôleur de novigation. Jusqu'à présent, j'ai cela, le bouton appelle cette méthode:Écart sur le contrôleur de navigation

-(IBAction)loadOptionsView:(id)sender { 

    if (self.optionsRootController == nil) { 

      //optionsRootController is declared as: UINavigationController *optionsRootController; 
      optionsRootController = [[UINavigationController alloc] init]; 

      //Options is a UIViewController 
      Options *myOptions = [[Options alloc] initWithNibName:@"OptionsMenu" bundle:nil]; 
      [optionsRootController pushViewController:myOptions animated:NO]; 
      [myOptions release]; 
    } 

    [self.view addSubview:optionsRootController.view]; 

} 

Qu'est-ce qui se passe quand je clique sur le bouton est qu'il charge le fichier xib Optionsdu au-dessus de l'écran actuel, mais il y a un écart au sommet de la taille de la barre d'état, donc je peux voir la vue ci-dessous. De l'aide? Quelle est la bonne méthode pour charger une nouvelle vue qui contient un contrôleur de navigation?

Merci à tous!

+0

Votre première vue possède-t-elle une barre d'état? Peut-être qu'une capture d'écran de la première vue et de la seconde vue serait utile – Jab

+0

Je n'ai pas ajouté de barre d'état moi-même. Il a la même barre d'état que n'importe quelle application utilise par défaut. –

Répondre

5

Je résolu ce problème en plaçant après:

[optionsRootController pushViewController:myOptions animated:NO]; 

cette ligne:

[optionsRootController.view setFrame: [self.view bounds]]; 

Nice et facile!

1

Je pense que initialiseur désigné UINavigationController est

- (id) initWithRootController:(UIViewController *)rootController 

donc votre code ci-dessus serait mieux exprimée en

//optionsRootController is declared as: UINavigationController *optionsRootController; 

    //Options is a UIViewController 
    Options *myOptions = [[Options alloc] initWithNibName:@"OptionsMenu" bundle:nil]; 
    optionsRootController = [[UINavigationController alloc] initWithRootController: myOptions]; 
    [myOptions release]; 
+0

Il produit le même résultat :( –

-1

est la vue dans votre nib la bonne taille pour tout l'écran? Essayez de désactiver la barre d'état simulée dans IB.