2010-10-27 3 views
8

J'ai un UITableViewController existant qui était précédemment utilisé dans un UINavigationController.Ajouter un UINavigationBar à un UITableViewController sans UINavigationController

J'ai besoin de le convertir pour être présenté comme une vue modale. Cependant, je veux toujours avoir une barre de navigation en haut. Je sais que cela semble étrange - pourquoi ne pas le présenter dans le UINavigationController si je veux un UINavBar? Je veux le présenter sans le UITabBarController associé à mon UINavigationController.

J'ai essayé d'ouvrir XIB en ajoutant une nouvelle vue, en déplaçant UITableView comme sous-vue et en ajoutant un NavigationBar à cette nouvelle vue. Cependant, cela ne semble pas avoir d'impact et la tableview entière est toujours présentée - aucune barre de navigation n'est visible. Je pense que c'est parce que la classe est une sous-classe de UITableViewController. Ai-je besoin de convertir cela en une classe UIViewClass? Y a-t-il une bonne approche pour ajouter une barre de navigation dans le code ou via Interface Builder à un UITableViewController existant?

Merci pour tout conseil sur la façon d'aborder cela.

Répondre

15

Avez-vous modifié la connexion dans XIB pour la vue Propriétaire du fichier? Il devrait pointer vers votre vue extérieure qui contient à la fois la barre de navigation et tableview.

Mais je ne suis pas sûr de comprendre pourquoi vous ne voulez pas utiliser un contrôleur de navigation. Il suffit de faire ceci:

MyViewController *viewController = [[[MyViewController alloc] init] autorelease]; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease]; 
[self presentModalViewController:navController animated:YES]; 

Je le fais tout le temps lors de la présentation d'une vue modale - il semble plus propre que notamment une barre de navigation directement dans la vue.

+0

Merci. C'était un peu un slapper de front pour moi. Cela a un sens parfait. – Nick

+0

Je voudrais upvote cette réponse 10 fois si je le pouvais. – Alyoshak

Questions connexes