2009-08-15 8 views
1

Je suis un problème avec le code suivant:problème en ajoutant un RootViewController à UINavigationController

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
self.myController = aController; 
myController.title = @"List"; 

[aController release]; 


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController]; 
self.rootNavController = bController; 

[bController release]; 

[self.view addSubview:rootNavController.view]; 

Quand je lance mon programme je reçois le problème où mon avis pour myController est répété le long de l'axe y tout le chemin jusqu'au bas de l'écran. Si j'ajoute myController.view à la vue racine, cela fonctionne bien. J'ai seulement le problème quand j'ajoute myController en tant que rootViewController de mon contrôleur de navigation.

Merci d'avance pour toute aide!

Répondre

1

Le problème était que je ne précisaient pas le cadre. Sans spécifier de cadre en utilisant CGRectMake, le contrôleur de vue remplissait tout l'espace.

La ligne que je avais besoin était quelque chose comme ceci:

rootNavController.view.frame = CGRectMake(0, 0, 320, 431); 
1

Le modèle contrôleur de navigation par défaut de projet définit -applicationDidFinishLaunching cette façon:

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  

    [window addSubview:[navigationController view]]; 
    [window makeKeyAndVisible]; 
} 

Je sais que vous êtes instanciation votre contrôleur de navigation avec alloc initialisation plutôt que de l'obtenir du XIB, cependant, il semble que vous devriez l'ajouter à l'arbre de vue de la fenêtre.

D'où vient le code à partir duquel vous appelez?

+0

J'ajoute le point de vue de la navigation à un autre contrôleur de vue. J'ai trouvé que ce n'est pas en répétant la vue mais en l'étirant pour qu'elle passe de la barre de navigation au bas de l'écran. Pensez-vous que le contrôleur de navigation modifie les dimensions du cadre? –

0

Essayez ceci:

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
self.myController = aController; 
[aController release]; 


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController]; 
self.rootNavController = bController; 
[bController release]; 

[window addSubview:rootNavController.view];//<--What are you adding the navigationController to??? Another ViewController? TabController? or Window? 

Puis, dans la - (void) méthode viewDidLoad de MyViewController vous pouvez mettre

self.navigationItem.title = @"List"; 
+0

Je l'ajoute à un contrôleur de vue. –

Questions connexes