6

J'ai actuellement vue comme mettre en place les éléments suivants:ajouter UINavigationController dans Programmatically UIViewController

@interface BlogViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { 
    UITableView *mainTableView; 
} 

@property (nonatomic, retain) UITableView *mainTableView; 

Comme vous pouvez le voir, il a une UITableView à l'intérieur de celui-ci que je charge toutes mes données. Toutefois, lorsque j'appelle la fonction suivante:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    SingleBlogViewController *viewController = [[SingleBlogViewController alloc] init]; 
    [self.navigationController pushViewController:viewController animated:YES]; 
    //[self presentModalViewController:viewController animated:YES]; 
    [viewController release]; 
} 

rien ne se passe. Pour une raison quelconque, mon UITableView à l'intérieur de mon UIViewController ne pousse pas la vue. Est-ce parce que ce n'est pas un UITableViewController? J'ai essayé de le changer et ça n'a toujours pas fonctionné.

Ai-je oublié quelque chose ici?

+1

Comment BlogViewController est-il affiché? A-t-il été poussé ou est-ce le contrôleur de vue racine d'un contrôleur de navigation? – Anna

+0

C'est une vue modale qui est montrée using presentModalViewController: – joshholat

+0

comment ajoutez-vous votre uiviewcontroller à votre programme? Avec un UINavigationController? – jmont

Répondre

26

J'ai trouvé les premières parties de this blog post utiles pour montrer comment créer et utiliser un UINavigationController par programmation sans Interface Builder.

Certaines des choses que je souhaite la documentation et des tutoriels me aurait souligné à:

  • Lorsque vous créez le UINavigationController vous obtenez un UIView et UINavigationBar gratuitement (vous n'avez pas besoin d'ajouter séparément eux et comprendre comment les accrocher ensemble).

  • Vous ajoutez la propriété myUINavigationController.view que la vue « principale », puis pousser/pop UIViewController s sur la UINavigationController et ils apparaîtront automatiquement comme visible dans le myUINavigationController.view UIView.

  • Lorsque vous appuyez sur un UIViewController sur un UINavigationController, le UIViewController.navigationController est rempli. Si vous ne l'avez pas poussé la vue sur le contrôleur de navigation, je suppose que la propriété est vide.

  • Le temps/lieu d'ajouter des boutons à la programmation UINavigationBar est pas quand et où vous construisez le UINavigationController, mais plutôt par les UIViewController individuels s quand ils sont chargés en poussant sur le UINavigationController.

  • Je ne ai dû ajouter un bouton « Terminé » pour UINavigationBar du UINavigationController dans la méthode viewDidLoad du premier UIViewController poussé sur le UINavigationController. Tout UIViewController j'ai poussé sur top de cette première vue avait automatiquement un bouton "retour" dans le naviguer UIViewController. Si vous définissez la propriété title de votre UIViewController avant de la placer sur la pile de UINavigationController. Le titre de UINavigationBar sera le titre de votre vue. De même, tous les boutons "retour" nommeront automatiquement la vue à laquelle vous revenez au lieu de dire "retour".

+0

Salut, désolé de déranger, mais le billet de blog que vous donnez est mort, une chance de le trouver ailleurs? merci – armnotstrong

+0

@armnotstrong essayez ceci https://web.archive.org/web/20120501094236/http://theolternative.wordpress.com:80/2009/04/27/iphone-dev-tips-navigation-and-tap- bar-controller/ –

-3

S'il vous plaît visitez "How to add UINavigationController Programmatically"

S'il vous plaît visitez lien ci-dessus & obtenir toutes les informations concernant UINavigationController.UINavigationController est une sous-classe de UIViewController, mais contrairement à UIViewController, il n'est généralement pas fait pour vous de sous-classer. C'est parce que le contrôleur de navigation lui-même est rarement personnalisé au-delà des visuels de la barre de navigation. Une instance de UINavigationController peut être créée dans le code ou dans un fichier XIB avec une relative facilité.

+2

Je pense que la question est comment créer un UINavigaionController dans un UIViewController, le lien ci-dessus montre seulement comment créer un UINavigationController dans la classe principale AppDelegate. – c0d3Junk13

+2

le lien est en panne. –