Search code examples
iosobjective-cibaction

prepareForSegue called before UIButton Action event


Following is my code for button action event.

-(IBAction)reportRepair{

    if(![Common hasReportRepairURL]){

        NSArray *forms = [[self delegate] getFormsForSection:@"REPORTREPAIR"];
        if(forms.count == 0){
            [self performSegueWithIdentifier:@"ReportRepairView" sender:self];
        }else if(forms.count == 1)
            [self getFormByFormID:[[forms objectAtIndex:0] intValue]];
        else
            [self performSegueWithIdentifier:@"FormsView" sender:self];
    }
}

and prepareForSegue is as below:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString: @"RepairDetailView"]){
        RepairDetailViewController *dest = (RepairDetailViewController *) [segue destinationViewController];
        dest.job = self.selectedJob;
        dest.tenancy = self.tenancy;
    }else if([[segue identifier] isEqualToString: @"ReportRepairView"]){
        ReportRepairViewController *dest = (ReportRepairViewController *) [segue destinationViewController];
        dest.tenancy = self.tenancy;
    }else if([[segue identifier] isEqualToString: @"FormsView"]){
        FormsSearchViewController *dest = (FormsSearchViewController *) [segue destinationViewController];
        dest.allowedForms = [[self delegate] getFormsForSection:@"REPORTREPAIR"];
        dest.tenancy = self.tenancy;
        dest.formSectionType = @"REPORTREPAIR";
    }else if([[segue identifier] isEqualToString: @"FormView"]){
        FormViewController *dest = (FormViewController *) [segue destinationViewController];
        dest.form = self.form;
        dest.tenancy = self.tenancy;
        dest.formSectionType = @"REPORTREPAIR";
    }
    else if([[segue identifier] isEqualToString: @"RepairsWebView"]){
        WebViewController *dest = (WebViewController *) [segue destinationViewController];
        dest.siteURL = [Common getReportRepairURL:self.tenancy];
        dest.screenTitle = AGLocalizedString(@"Report a Repair", @"Report a Repair");
    }
}

when I debug the code it is know to me, that prepareForSegue method is called before Action event. Due to this, For UI point of view, I am facing some abnormal behaviour in my application.


Solution

  • Try to make segues like below images. Don't draw segues from Button to ViewController. If the segues have been added already remove them.

    enter image description here