gungner
gungner

Reputation: 109

prepareForSegue not executed

I've a storyboard (xcode5) with an embedded navigation controller (the navigation controller points into my main view controller).

I've created a segue name to a new view controller which I want to open through my code.

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self];


- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     NSLog(@"Segue");
}

The view controller do open up but the prepareForSegue will never run, why?

I've tried with

[self performSegueWithIdentifier:@"segueTo" sender:self];

but then I get an runtime error saying it can't find the segue name.

Upvotes: 1

Views: 280

Answers (2)

NightFury
NightFury

Reputation: 13546

Segue you are trying to perform must be linked from viewcontroller1 (embedded in navigation controller) to newviewcontroller. In storyboard, make sure you have named connecting segue as "segueTo". Then in viewcontroller1, call:

[self performSegueWithIdentifier:@"segueTo" sender:self];

instead of:

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self];

This should solve your problem.

Upvotes: 1

Greg
Greg

Reputation: 25459

Replace this line:

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self];

with

[self performSegueWithIdentifier:@"segueTo" sender:self];

It should help.

Upvotes: 0

Related Questions