2017-02-18 7 views
2

は、私はストーリーボードセグエを経由して、プログラムで表示された二次のViewControllerを持っていますAppDelegateは、メニュー項目のクリックによってトリガされます。スウィフトdismissViewController MacOSの

しかし、セグエがメインのViewControllerに接続されていても、次のコードは、二次ビュー却下されていません。

@IBAction func dismiss(_ sender: Any) 
{ 
    print("Hello? Gonna close?") 

    self.presenting?.dismissViewController(self) 
} 

はエラーはありませんが、機能はボタンを閉じ、正しいに呼び出されますクリックしますが、セカンダリビューは閉じません。私はdismissViewControllerのあらゆるバリエーションを無駄にしようとしました。

メインビューのボタンを使用して同じセグを有効にすると、すべてが正常に動作します。私は、単にボタンの束でメインビューを乱雑にしたくないです。

ご意見ありがとうございます、ありがとうございます。モーダルモードで表示されたビューコントローラのためにのみ機能しますdismissViewController

+0

場合は、この行を'self.presenting?.dismissViewController(self)'が実行され、 'self.presenting'の値は何ですか? –

+0

@DaveWeston、良い質問です。 'let x = self.presenting! 'を使って! NSViewController'として、**致命的なエラーでアプリケーションがクラッシュしました:オプション値**をアンラッピングしている間に予期せずnilが見つかりました。どうやらviewControllerのプレゼンテーションはありません。 –

答えて

1

(使用Present Modally Segue) としては、あなたがこのように、Show Segueが提示View Controllerを、却下すべきthis SO questionへの答えで述べている:

navigationController?.popViewController(animated: true) 
dismiss(animated: true, completion: nil) 
+0

dismissViewControllerは、シートとして提示されたView Controllerで動作し、同様に表示されます。このプロジェクトでは、navigationControllerはありません。とにかく入力いただきありがとうございます。 –

関連する問題