2011-11-15 4 views
2

J'ai mis à niveau vers XCode 4.2. Lorsque mon application est exécutée dans le simulateur iOS 4.0, la barre de navigation s'affiche sur plusieurs vues dans lesquelles elle est insérée. Lorsque l'application est exécutée dans le simulateur iOS 5.0 et sur un périphérique avec iOS 5.0, la barre de navigation est supprimée dans toutes les vues et les vues de table sont déplacées pour remplir cet espace. Le contrôleur de navigation est créé en utilisant le code suivant:navigationController barre de retour bouton manquant dans iOS 5

navigationController = [[UINavigationController alloc] initWithRootViewController:swViewController]; 

et les vues sont poussés sur le NavigationController comme ceci:

UIBarButtonItem *backButtonItem  = [[[UIBarButtonItem alloc] initWithTitle:@"NextLevel" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease] ; 
    self.navigationItem.backBarButtonItem = backButtonItem; 
    [self.navigationController pushViewController:self.listController animated:YES]; 

Le NavigationController est ajouté à la fenêtre via:

[window addSubview:self.navigationController.view]; 

Mise à jour 1 - Il semble que la barre de navigation par défaut dans iOS 5 est masquée, donc j'ai ajouté

[[self navigationController] setNavigationBarHidden:NO animated:YES]; 

et je vois maintenant la barre de navigation, mais pas de bouton de retour comme spécifié dans backButtonItem.

Mise à jour 2 - Je définis également le titre navigationController, mais cela n'apparaît pas non plus.

  self.navigationController.title  = @"Title"; 

Y a-t-il quelque chose qui manque ou est nécessaire pour que la barre de navigation soit visible en haut dans iOS 5.0?

Répondre

1

Je l'ai compris. J'ai eu le code suivant pour cacher la barre de navigation quand je réapparu comme par ce lien SO

hide_nav_bar

- (void) viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

Une fois que je commentais ce code, puis sur le bouton arrière présenté.

1

Ce n'est pas clair à 100% ce qui ne va pas. Dans des cas comme celui-ci (fonctionne sur iOS plus ancien, casse sur la mise à niveau) vous avez probablement fait quelque chose de mal tout le long, mais il est juste arrivé à travailler sur l'ancien système d'exploitation.

Juste comme une supposition, je recommande d'utiliser la propriété rootViewController d'UIWindow au lieu de l'ancien addSubview: appel. En d'autres termes,

window.rootViewController = self.navigationController; 

Voir si cela aide.

+0

Il est tout à fait possible que la raison pour laquelle il a éclaté sur iOS 5 était que je faisais quelque chose de mal auparavant. À chaque mise à niveau, Apple tente d'affiner la vérification des erreurs. J'ai ajouté votre code ci-dessus, mais cela ne l'a pas résolu. –

Questions connexes