2016-05-02 9 views
0

を解任します他のビューコントローラをモーダル表示し、そこにボタンがあり、それをタップすると、最初にコントローラを再初期化せずに表示したいと思っています。 どうすればよいですか?は、私はこのような状況を持っているスウィフト二つのコントローラ

+0

2番目のView Controllerでプレゼンターを終了させて​​ください。 – Avi

+0

完了ブロックも使用できます。 View Controllerを終了すると、完了ブロックが表示されます。 –

答えて

5

これは、unwind segueの完璧な状況です。

あなたの最初のViewController(あなたがに戻りたい1)でこれを入れて:

@IBAction func backFromVC3(_ segue: UIStoryboardSegue) { 
    print("We are back in VC1!") 
} 

その後、あなたの第三のViewControllerでストーリーボードには、あなたのボタンから制御押しながらドラッグを出口で降りアイコンにviewControllerの上部にあり、ポップアップからbackFromVC3を選択します。

ここで、ユーザーがVC3のボタンを押すと、VC3とVC2の両方が閉じられ、VC1に戻ります。


ストーリーボードを使用していない場合は、コードでviewControllerを閉じることができます。ここでのViewControllerの2つのレベルの却下するボタンのハンドラ用のコードです:すべての返信用

func doDismiss(_ sender: UIButton) { 
    // Use presentingViewController twice to go back two levels and call 
    // dismissViewController to dismiss both viewControllers. 
    self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) 
} 
+0

私の問題は、私はコードでボタンを作成することです – gianni

+0

あなたのViewControllerはストーリーボードにありますか、またはすべてのUIはコードで完了していますか? – vacawama

+0

私はすべてコードで製作しました – gianni

0

おかげで、私の質問を編集した:)

私は解決私の問題への2行のコードが見つかりました:

LETをappDelegate = UIApplication.sharedApplication()。デリゲートとして! AppDelegate appDelegate.window!.rootViewController?.dismissViewControllerAnimated(true、完了:なし)。

これはうまくいきます。

ありがとうございました

関連する問題