Я запускаю модальный контроллер вида 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];
}
Спасибо за любые идеи.