Conditionally following a segue

16,693

Solution 1

You can wire up your login button or whatever to some IBAction code, decide if the login should proceed and then (if it should) you can use performSegueWithIdentifier: to transition to the new view.

I just wrote another post about using this method, here.

Solution 2

On iOS 6, UIViewController's shouldPerformSegueWithIdentifier:sender: method solves this issue without manual triggering segues.

Solution 3

  1. Create a manual segue from "login" to say "dashboard"
  2. Give a name for segue identifier, e.g. "showDashboard"
  3. Wire the "Next" button for IBAction
  4. Manually invoke segue with identifier once all the constraints are met.

- (IBAction)nextButtonPressed:(id)sender
{
    if ([self hasAllRequiredFields]) {
        [self performSegueWithIdentifier:@"showDashboard" sender:self];
    } 
}

Solution 4

This is belated, but imo it's best to setEnabled:NO whatever is triggering the segue until the segue is "valid". That separates your segue logic from your view logic....

Share:
16,693
mmvie
Author by

mmvie

Updated on June 06, 2022

Comments

  • mmvie
    mmvie about 2 years

    In my app I have a login screen. When connecting a segue from the login button to the next (table) view controller however, you are always able to proceed, no matter what you type in as login information. How can I check the login information and then decide whether to perform the segue or not, so how to perform the segue conditionally?

    Is it possible to achieve this while working with a segue? I know it can be done programmatically, but then I need another navigation controller cause I need a navigation bar..