4

ビュー コントローラ スタックの 2 レベルに戻りたいと思います。Show、Show、Present Modally の 3 つのセグエがあります。使用中のナビゲーションコントローラーがあります。4 番目のビューから 2 番目のビューに戻りたいと思います。使ってみました self.presentingViewController?.presentingViewController?.navigationController?.popViewControllerAnimated(false);

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

2 番目のものは、2 番目と 3 番目のセグエが「Present Modally」の場合にのみ機能します。それらを却下とポップで動作させるにはどうすればよいですか?

4

4 に答える 4

5

他の 2 つをポップする前に、提示されたビュー コントローラーを閉じてみてください。

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);

    });
}
于 2014-12-17T23:00:48.230 に答える
3

このテクニックを使用できます

https://stackoverflow.com/a/15839298/1153100

シンプルでクリーン (アンワインド セグエ)

@IBAction func unwindAction(segue: UIStoryboardSegue) {
}
于 2015-05-12T05:21:41.083 に答える