0

J'essaie de naviguer dans un contrôleur de vue par programmation. J'ai déjà ajouté le UINavigationControllerDelegate dans le fichier d'en-tête ... Mais la vue n'a pas poussé quand j'ai cliqué sur le bouton .. Est-ce que quelqu'un peut dire que j'ai fait quelque chose à tort ???UINavigationController ne pousse pas correctement

-(void)nextPage 
    { 
     NSLog(@"1234"); 
     infoViewController* info = [[infoViewController alloc] init]; 
     [self.navigationController pushViewController:info animated:YES]; 
     info = nil; 
    } 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     self.navigationController.delegate = self; 
     startFutureView = [[UIView alloc] initWithFrame:CGRectMake(160, 0, 320, 548)]; 
     startFutureView.backgroundColor = [UIColor redColor]; 
     [self.view addSubview:startFutureView]; 


     startPastView = [[UIView alloc] initWithFrame:CGRectMake(-160, 0, 320, 548)]; 
     startPastView.backgroundColor = [UIColor blueColor]; 
     [self.view addSubview:startPastView]; 

     startInfoBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     startInfoBtn.frame = CGRectMake(80, 137, 180, 180); 
     [startInfoBtn addTarget:self action:@selector(nextPage)       forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:startInfoBtn]; 

// Do any additional setup after loading the view, typically from a nib. 
    } 
+0

changer le NSLog pour se connecter self.navigationController . est-ce nul? – wattson12

+1

Il suffit d'ajouter le navcontrollerdelegate au fichier d'en-tête. Avez-vous créé une instance de navigationController? est-il assigné à rootViewController de la fenêtre? Si votre viewController où vous essayez de pousser, n'est pas un rootviewcontroller d'un UINavigationController, rien ne se passera. Ajouter plus de code sur votre AppDelegate et ViewController aidera –

Répondre

1

Il n'y a pas besoin de se conformer à UINavigationControllerDelegate pour pousser un contrôleur de vue. Je devine que votre navigationController est nul. La raison de ceci est que vous utilisez un contrôleur de vue simple, mais ce que vous devez faire est de créer le contrôleur de vue, puis l'envelopper dans un contrôleur de navigation. À titre d'exemple, supposons que vous êtes maintenant présenterez viewController modalement:

UIViewController *viewController = [[UIViewController alloc] init]; 

[self presentViewController:viewController animated:YES completion:nil]; 

faisant cela signifie viewController n'a pas de contrôleur de navigation, de sorte que vous devez faire ceci:

UIViewController *viewController = [[UIViewController alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

[self presentViewController:navigationController animated:YES completion:nil]; 
Questions connexes