Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditionally following a segue

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..

like image 329
mmvie Avatar asked Oct 23 '11 14:10

mmvie


3 Answers

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.

like image 148
Simon Avatar answered Nov 12 '22 10:11

Simon


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

like image 36
Nikolay Mamaev Avatar answered Nov 12 '22 10:11

Nikolay Mamaev


  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];
    } 
}

like image 31
Ramesh Avatar answered Nov 12 '22 11:11

Ramesh