Подтвердить что ты не робот

Вызов viewwillappear после отклонения modalviewcontroller

Как я могу вызвать viewwillappear после отклонения modalviewcontroller?

Любая идея, пожалуйста, потому что после увольнения мой viewwillappear не получил вызов:

отображение моего диспетчера взглядов модально: //firsviewcontroller:

-(IBAction)AddActivity:(id)sender{


    CreateActivity *addViewController = [[CreateActivity alloc] initWithNibName:@"CreateActivity" bundle:nil];

    addViewController.delegate = self;
    addViewController.modalPresentationStyle = UIModalPresentationFormSheet;

    addViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    [self presentModalViewController:addViewController animated:YES];


    addViewController.view.superview.frame = CGRectMake(50, 260, 680, 624);

}

//secondvioewcontroller: я создаю предупреждение, чтобы отклонить этот modalview, но viewwillapear не получил вызов:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0){


        if ([self respondsToSelector:@selector(presentingViewController)]){
            [self.presentingViewController dismissModalViewControllerAnimated:YES];
        }
        else {
            [self.parentViewController dismissModalViewControllerAnimated:YES];
        }
    }
}
4b9b3361

Ответ 1

presentModalViewController:animated:/dismissModalViewControllerAnimated: устарели. Вместо этого используйте presentViewController:animated:completion:/dismissViewControllerAnimated:completion:.

Вы можете использовать блок завершения, чтобы выполнить любую ошибку после отправки кода:

- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex
{
    if (buttonIndex == 0)
    {
        MyCustomViewController* mcvc = (MyCustomViewController*)self.presentingViewController;

        [self dismissViewControllerAnimated: YES completion: ^{

             // call your completion method:
             [mcvc someCustomDoneMethod];
        }];
    }
}

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

Ответ 2

Поскольку вы представляете modal view controller как лист формы, представление диспетчера представления никогда не исчезает, поэтому viewWillAppear: не вызывается после увольнения. Если вы хотите, чтобы оператор представления представления обрабатывал что-то после увольнения, вызовите метод делегата в методе модального контроллера viewDidDisappear:. Вы уже установили делегат, поэтому я предполагаю, что у вас уже есть протокол делегатов в CreateActivity.

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