Conditionally following a segue
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
- Create a manual segue from "login" to say "dashboard"
- Give a name for segue identifier, e.g. "showDashboard"
- Wire the "Next" button for IBAction
- 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....
mmvie
Updated on June 06, 2022Comments
-
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..