0

У меня есть этот навигационный стектолчок контроллер представления отпустив представленный контроллер представления

RootVC ---> VC1 -> (представление) -> ModalVC

и я VC2 (не навигационный стек).

При представлении ModalVC, я хочу, чтобы нажать на кнопку в моем ModalVC уволить ModalVC, а затем нажмите VC2 в навигационный стек после VC1 в один клик. Он должен выглядеть следующим образом:

RootVC ---> VC1 ---> VC2

Я пробовал много способов сделать это, но только толкая огнь события, когда я вернусь к моему RootVC.

Я пытался сделать это с делегатами:

В ModalVC по щелчку:

[self dismissViewControllerAnimated:YES completion:^{ 
    if ([self.delegate respondsToSelector:@selector(dismissAndPush:)]) { 
     [self.delegate performSelector:@selector(dismissAndPush:) withObject:VC2]; 
    } 
}]; 

В VC1:

- (void)dismissAndPush:(UIViewController *)vc { 
    [self.navigationController pushViewController:vc animated:NO]; 

} 

Пожалуйста, помогите понять это поведение. Где моя ошибка?

+0

Пожалуйста, проверьте link.I найдены с помощью этой ссылки: http: //stackoverflow.com/questions/24939465/dismiss-modal-then-immediately-push-view-controller – Akhtar

ответ

1

Ошибка была в другом. Если я правильно понимаю: некоторые анимации до отклонения представленного контроллера представления блокируют анимацию в стеке навигации. Я решил эту проблему с 2-мя способами:

1) deleteting или набор правильных анимаций до увольнения

2) использовать setViewControllers в навигационном контроллере (я выбираю его)

- (void)dismissAndPush:(UIViewController *)vc { 
    [self dismissViewControllerAnimated:NO completion:^{ 
     NSMutableArray *mutableControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; 
     NSArray *controllers = [mutableControllers arrayByAddingObject:vc]; 
     [self.navigationController setViewControllers:controllers animated:NO]; 
    }]; 

} 
+0

этот метод не будет работать ...я попробовал это – Dalvik

+0

http://stackoverflow.com/questions/24939465/dismiss-modal-then-immediately-push-view-controller проверить эту ссылку @RahulMishra – Akhtar

0

От Apple Documentation:

Представляющий-контроллер отвечает за отклоняя контроллер зрения он представлен.

Итак, VC1 должен быть отвергая ModalVC, попытайтесь сделать это

ModalVC по щелчку:

if ([self.delegate respondsToSelector:@selector(dismissAndPush:)]) { 
     [self.delegate performSelector:@selector(dismissAndPush:) withObject:VC2]; 
    } 

В VC1:

- (void)dismissAndPush:(UIViewController *)vc { 

[self dismissViewControllerAnimated:YES completion:^{ 
    [self.navigationController pushViewController:vc animated:NO]; 
}]; 

} 
+0

Я пробовал это. Такое же поведение. – SPecteR

+0

Проверьте, не инициализирован ли параметр vc на rejectAndPush: – Leonardo

+0

Я пробовал, но не помогает ... – SPecteR

Смежные вопросы