Отключите модальный контроллер представления и одновременно переходите от отправки к другому контроллеру представления в IOS - PullRequest
0 голосов
/ 17 ноября 2018

Я запускаю модальный контроллер вида VCM, встроенный в контроллер навигации из VC1.

Модальный VC имеет кнопку для перехода к другому контроллеру вида, VC2.

если пользователь нажимает кнопку, чтобы перейти к VC2, мне нужно одновременно закрыть модал и также изменить отправку с VC1 на VC2. (Важно отказаться от модального режима, чтобы избавиться от него, поэтому у меня нет стекающихся в стек VC.)

Вот метод действия в модале, прикрепленном к кнопке VC2.

- (IBAction)VC2ButtonPressed:(id)sender {

    [self dismissViewControllerAnimated:true completion:nil];
//Above line works fine
    [VC1 performSegueWithIdentifier:@"showVC2" sender:VC1];//No known class method error

}

Я могу отклонить модал без каких-либо проблем (первая строка), но не могу понять, как одновременно переходить на VC2. В VC1 есть сюжетная сцена под названием 'showVC2', которая того стоит. У меня нет соответствующих методов класса в настоящее время в отправляющем VC. Должен ли я создать специальный метод класса? Или как я могу вызвать метод в VC, который запустил модал.

Изменить:

Я тоже пробовал:

[self.presentingViewController performSegueWithIdentifier:@"showVC2" sender:self];

Это компилируется, но дает ошибку во время выполнения () не имеет перехода с идентификатором 'showVC2' '

Я думаю, это потому, что VC2 встроен в tabbarcontroller.

Edit2:

Я пытался поместить код в обработчик завершения, как предложено @Oscar, но пока код запускается, VC2 не загружается

 [self dismissViewControllerAnimated:YES completion:^{
        [self gotoVC2];
    }];

новый метод

-(void)gotoVC2 {
    LogDebug(@"gotoVC2 called");//DOES log to console
    UIStoryboard *storyBoard = self.storyboard;

    IDFeedVC *VC2 =
    [storyBoard instantiateViewControllerWithIdentifier:@"vc2"];
    [self presentViewController:VC2 animated:YES completion: nil];
}

Спасибо за любые идеи.

...