Уволить и открыть контроллер представления

Я хочу вернуться на два уровня в моем стеке контроллеров представления. У меня есть три segues в этом порядке: Показать, Показать, Представить Модально. Используется навигационный контроллер. С моего 4-го вида я хочу вернуться ко 2-му виду. Я пытался использовать self.presentingViewController?.presentingViewController?.navigationController?.popViewControllerAnimated(false);

а также

self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(false, completion: nil);

Второй работает только в том случае, если 2-й и 3-й сегменты обозначаются как "Представить модально". Как я могу заставить их работать с увольнением и популярностью?

4 ответа

Попробуйте отклонить представленный контроллер представления прежде, чем выдвинуть другие два:

func dismissThenDoublePop() {

    // Get the presenting/previous view
    let previousView = self.presentingViewController as UINavigationController

    // Dismiss the current view controller then pop the others
    // upon completion
    self.dismissViewControllerAnimated(true, completion:  {

        // Get an array of the current view controllers on your nav stack
        let viewControllers: [UIViewController] = previousView.viewControllers as [UIViewController];

        // Then either pop two view controllers, i.e. pop
        // to viewControllers[viewControllers.count - 2], or
        // pop to the second view controller in the nav stack,
        // i.e. viewControllers[1]. (In this case I've used the
        // first option.)
        self.navigationController!.popToViewController(viewControllers[viewControllers.count - 2], animated: true);

    });
}

Вы можете использовать эту технику

/questions/24854173/dlya-chego-nuzhnyi-segmentyi-unwind-i-kak-vyi-ih-ispolzuete/24854174#24854174

Просто и чисто (размотать сегу)

@IBAction func unwindAction(segue: UIStoryboardSegue) {
}

Вы используете как этот.

self.navigationController?.popViewControllerAnimated(true)

Просто вызовите dismissViewControllerAnimated. Он автоматически отклонит все контроллеры представления, включая представленную модель viewcontroller.

Цель - С

[self.navigationController dismissViewControllerAnimated:YES completion:nil]; 

стриж

self.navigationController?.dismissViewControllerAnimated(false, completion: nil);
Другие вопросы по тегам