Search code examples
xcodeios6uinavigationcontrollerxcode4.5pushviewcontroller

How do i set a modal segue (programmatically) to a push segue


i have an navigation controller in my storyboard, but for one reason i have to make one segue programmatically, but how do i make a push segue programmatically?

this is my code so far:

- (IBAction)nextviewButton:(id)sender {
    HolesViewController *Holes = [self.storyboard instantiateViewControllerWithIdentifier:@"HolesViewController"];
    Holes.nameString = self.NameField.text;

    [self presentViewController:Holes animated:YES completion:nil];
}

Solution

  • Alternatively, I actually prefer to define a segue right in my storyboard, but rather than originating from the button, I have it originate from the view controller itself, e.g.:

    create segue

    Then, give that segue a "storyboard id", say "Details", and then you can invoke that segue programmatically via:

    [self performSegueWithIdentifier:@"Details" sender: ...]; // you can specify either the button or `self` for the `sender
    

    I like this because that way, the storyboard continues to visually represent the flow of the app (as opposed to possibly having scenes floating out there with no segues). And you can use the exact same construct for both push and modal segues (and the view controller that's presenting the next view controller doesn't care which one the storyboard uses).