NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController

so I'm making an app with 5 view controllers, the first is embedded in a UINavigationController and the segue between the first 4 view controllers works fine. However introducing a 5th View Controller has broken this, and I'm getting the error

Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

I havent done anything differently with this 5th view controller, its just a standard ViewController with an image view and a label, and all of my segues are called by ctrl dragging buttons in the storyboard. Does anybody have any idea whats causing this?

Thanks


add Navigation Controller to your initial view

  1. Select the initial view
  2. Go To Editor--> Embed In --> Navigation Controller.

Set UINavigationcontroller as Initial View controller (Initial Scene) in StoryBoard.


In my case at the time the original VC performed the segue, the Navigation Controller was transitioning and already changed he visible VC.

I solved it by doing:

if (self.navigationController.visibleViewController == self) {
    [self performSegueWithIdentifier:@"thankyou" sender:self];
}

no more crash. :)