2011-06-16 7 views
0

J'ai l'action suivante qui est appelée quand un bouton est cliqué. Le message du journal est imprimé, la vue ne change pas. Cette fonction est dans un UIViewController.iPhone: UINavigationController ne montre pas la nouvelle vue

Des idées de ce que je fais mal? Pourquoi la nouvelle vue n'est-elle pas affichée avec un arrière-plan rouge?

- (void)viewDidLoad 
{ 
[levelButton2 addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside]; 
//MORE CODE 
} 

- (void) clickButton 
    { 
     NSLog(@"Clicked Button"); 
     UIViewController *myViewController = [[UIViewController alloc] init]; 
     myViewController.title = @"My First View"; 
     myViewController.view.backgroundColor = [UIColor redColor]; 

     //to push the UIView. 
     [self.navigationController pushViewController:myViewController animated:YES]; 

     //[self.navigationController pushViewController:nextController animated:YES]; 
    } 
+1

Êtes-vous sûr que self.navigationController n'est pas nul? Définir une pause et parcourir le code avec le débogueur ne suffit pas de se connecter une ligne. – Nick

+0

Je ne sais pas si c'est nul - Je dois vérifier. Je ne l'ai pas instancié cependant. Les UIViewControllers obtiennent-ils un navigationController gratuitement? –

+0

UINavigationController n'est pas inclus dans un UIViewController. La propriété est un pointeur sur UINavigationController s'il y en a un. – Nick

Répondre

0
-(void) clickButton 
{ 
    NSLog(@"Clicked Button"); 
    MyFirstController *myViewController = [[MyFirstController alloc] init]; 

    [self.navigationController pushViewController:myViewController animated:YES]; 
    [myViewController release]; 
} 

Puis, après aller dans le fichier MyFirstController.m et

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    if(self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) 
    { 
     self.title = @"My First View"; 
    } 
    return self; 
} 

J'espère que cela va vous aider.

0

Vous havent utilisé ou mentionnez fichier NIB dans ce fichier controller..Add NIB ou bien faire le contrôleur de jeu de vue racine d'une navigation avec un contrôleur de vue et appuyez sur le contrôleur de vue

+0

vous n'avez pas besoin de pointes. Vous pouvez utiliser des plumes, mais ce n'est pas comme si c'était une approche requise. – Nick

0

Vous devez changer votre IBAction méthode un peu comme,

- (void) clickButton 
    { 
     NSLog(@"Clicked Button"); 
     MyFirstController *myViewController = [[MyFirstController alloc] initWithNibName:@"MyFirstController" bundle:nil]; 
     myViewController.title = @"My First View"; 
     myViewController.view.backgroundColor = [UIColor redColor]; 

     //to push the UIView. 
     [self.navigationController pushViewController:myViewController animated:YES]; 

     //[self.navigationController pushViewController:nextController animated:YES]; 
    } 
+0

Est-ce que cela fonctionne même s'il n'y a pas de fichier nib associé à MyFirstController? Dois-je init avec nib? –

Questions connexes