Search code examples
iosuiviewcontrolleruinavigationcontrolleruitabview

Pushing a navigation controller after a modal view controller is presented


I have a tab view controller which has a button like so and when it gets pressed a modal appears:

PostViewController *post = [[PostViewController alloc] init];

// [self.navigationController pushViewController:post animated:YES];

// Presentation
[self presentViewController:post animated:YES completion:nil];

When the modal is done I want to dismiss it and push a new view controller like so:

ProfilesViewController *profile = [[ProfilesViewController alloc] init];
[self.navigationController pushViewController:profile animated:YES];

But I can't do it in the post vc as its a modal. How do I do this?


Solution

  • You can try using completionBlock.

    CompletionBlock is called when presentViewController is done.

    PostViewController *post = [[PostViewController alloc] init];
    [con presentViewController:post animated:YES completion:^{
        ProfilesViewController *profile = [[ProfilesViewController alloc] init];
        [self.navigationController pushViewController:profile animated:YES];
    }];
    

    More information about presentViewController:animated:completion: Apple Doc

    completion : The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter.