Question

I am trying to navigate some view controller programatically. I have already add the UINavigationControllerDelegate in the header file...But the view didnt push out when I click the button..Can anyone tell did I do anything wrongly???

    -(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.
    }
Was it helpful?

Solution

There is no need to conform to UINavigationControllerDelegate to push a view controller. I'm guessing that your navigationController is nil.

The reason for this is that you are using a plain view controller, but what you need to do is create the view controller, and then wrap it in a navigation controller. As an example, assume you are now presenting viewController modally:

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

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

doing this means viewController has no navigation controller, so you need to do this instead:

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

[self presentViewController:navigationController animated:YES completion:nil];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top