2010-11-13 4 views
0

La vue principale de mon application n'a pas de UINavigationController mais lorsqu'un bouton est appuyé, il affiche une vue pour créer un événement. Cette vue CreateEvent a un UINavigationController pour se déplacer à travers les différentes vues nécessaires pour créer le nouvel événement. Le UINavigationController est affiché mais ne peut pas définir un titre ou ajouter des boutons de navigation. En regardant le code, pouvez-vous trouver pourquoi? MerciUINavigationController ne fonctionne pas comme prévu (iPhone)

CreateNewEventViewController.h

@interface CreateNewEventViewController : UIViewController { 

    UINavigationController *navigationController; 
    NewEventTableViewController *tableViewController; 
} 

CreateNewEventViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    tableViewController = [[NewEventTableViewController alloc] init]; 
    tableViewController.view.center = CGPointMake(tableViewController.view.frame.size.width/2, 
                tableViewController.view.frame.size.height/2 + 44); 
    [self.view addSubview:tableViewController.view]; 

    navigationController = [[UINavigationController alloc] init]; 
    //without this instruction, the tableView appears blocked 
    navigationController.view.frame = CGRectMake(0, 0, 320, 44); 
    navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 
    //title appears empty and buttons don't appear 
    self.navigationItem.title = @"Create event"; 

    [self.view addSubview:navigationController.view]; 

} 

NewEventTableViewController.h

@interface NewEventTableViewController : UITableViewController { 

} 

PS: j'ai oublié de dire que je n'ai pas le fichier .xib.

Répondre

2

En supposant que vous voulez que la vue de la table à apparaître dans le contrôleur de navigation, vous devez faire quelque chose comme ceci:

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    tableViewController = [[NewEventTableViewController alloc] init]; 
    tableViewController.view.center = CGPointMake(tableViewController.view.frame.size.width/2, 
                tableViewController.view.frame.size.height/2 + 44); 

// remove this: [self.view addSubview:tableViewController.view]; 

    navigationController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; // <-- do this instead 
    //without this instruction, the tableView appears blocked 
    navigationController.view.frame = CGRectMake(0, 0, 320, 460); // <-- nav controller should fill the screen 
    navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 

    //title appears empty and buttons don't appear 
    tableViewController.navigationItem.title = @"Create event"; // <-- something like this 

    [self.view addSubview:navigationController.view]; 

} 
+0

Merci! cela a fonctionné finalement, je devrais vraiment prendre une vue plus profonde sur le sujet d'UINavigationController. Notez simplement que la définition du titre à partir de tableViewController.navigationItem.title = @ "Créer un événement"; n'a pas fonctionné mais il l'a fait de viewDidLoad dans NewEventTableViewController.m – framara

Questions connexes