Search code examples
iosobjective-cuiviewcontrollerpushviewcontrollerpresentviewcontroller

PresentViewController dismiss doesn`t go back to previous viewController


On my project we have three windows A, B and C. From A I would like to push view B, and from B I would like to present view C. My code: ViewController A:

ViewControllerB *vcB = [[viewControllerB alloc] 
initWithNibName:@"ViewControllerB" bundle:nil];
[[self navigationController] pushViewController:vcB animated:YES];

View Controller B:

ViewControllerC *vcC = [[ViewControllerC alloc] 
initWithNibName:@"ViewControllerC" bundle:nil];
[self presentViewController:vcC animated: true completion: nil];

Everything is ok until now, but when I dismiss the last view controller with:

[[self presentingViewController] dismissViewControllerAnimated:NO completion:nil];

The app goes back to first view controller (vcA) instead the second one (vcB)

What am I doing wrong? Thank you, guys.


Solution

  • You must be doing something else that you're not telling us about...

    This works as expected:

    In MyFirstViewController.m

    - (IBAction)pushTapped:(id)sender {
        MyPushedViewController *vc = [[MyPushedViewController alloc] initWithNibName:@"MyPushedViewController" bundle:nil];
        [self.navigationController pushViewController:vc animated:YES];
    }
    

    In MyPushedViewController.m

    - (IBAction)presentTapped:(id)sender {
        MyPresentedViewController *vc = [[MyPresentedViewController alloc] initWithNibName:@"MyPresentedViewController" bundle:nil];
        [self presentViewController:vc animated:YES completion:nil];
    }
    

    In MyPresentedViewController.m

    - (IBAction)dismissTapped:(id)sender {
        [self dismissViewControllerAnimated:NO completion:nil];
    }
    

    Tapping the "dismiss" button in MyPresentedViewController dismisses the presented view controller (your vcC), leaving me at MyPushedViewController (your vcB) ... NOT at MyFirstViewController (your vcA).