Search code examples
iphoneiosios5segueuistoryboardsegue

To stop segue and show alert


Using iOS 5 storyboards, on a button I am performing a segue, what I want is to do validation on my textfield and if validation is failed I have to stop segue and throw an alert. Whats the way to do it?


Solution

  • If your deployment target is iOS 6.0 or later

    You can simply implement the shouldPerformSegueWithIdentifier:sender: method on your source view controller. Make this method return YES if you want to perform the segue, or NO if you don't.

    If your deployment target is earlier than iOS 6.0

    You will need to change the way your segue is connected in the storyboard and write a little more code.

    First, set up the segue from the button's view controller to the destination view controller, instead of directly from the button to the destination. Give the segue an identifier like ValidationSucceeded.

    Then, connect the button to an action on its view controller. In the action, perform the validation and either perform the segue or show an alert based on whether the validation succeeded. It will look something like this:

    - (IBAction)performSegueIfValid:(id)sender {
        if ([self validationIsSuccessful]) {
            [self performSegueWithIdentifier:@"ValidationSucceeded" sender:self];
        } else {
            [self showAlertForValidationFailure];
        }
    }