prepareForSegue вызывается перед событием UIButton Action - PullRequest
0 голосов
/ 28 ноября 2018

Ниже приведен мой код для события действия кнопки.

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

и prepareForSegue, как показано ниже:

- (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");
    }
}

когда я отлаживаю код, мне известно, что метод prepareForSegueвызывается до события Action.В связи с этим, с точки зрения пользовательского интерфейса, я сталкиваюсь с ненормальным поведением в моем приложении.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы должны использовать либо нажатие кнопки, либо переход от контроллера View, но не оба одновременно.Поэтому убедитесь, что если уже добавлены сегменты в контроллере представления в раскадровке, сначала удалите его.

Важное примечание:

  • Когда мы добавляем сегменты непосредственно из контроллеров представления раскадровкичем вызов метода prepareForSegue сразу после появления представления, и он не будет ждать события нажатия кнопки.

Надеюсь, это поможет.

0 голосов
/ 28 ноября 2018

Попробуйте сделать переходы, как на картинках ниже.Не рисуйте сегменты от Button до ViewController.Если сегы уже добавлены, удалите их.

enter image description here

...