2016-09-23 9 views
0

私はnavigationControllerをストーリーボードで直接ナビゲートするか、コードからsegueを呼び出すかのどちらかを使って開きますが、まだストーリーボード上に作成しています。モーダル提示されたコントローラを正しく閉じるには

例:

self.performSegue(withIdentifier: "addNew", sender: nil) 

その後、モーダル移行にnavigationControllerを開きます。

self.navigationController?.dismiss(animated: true, completion: nil) 

しかし、その後、私はTabbarController上の異なるViewControllers切り替えたり、プッシュして他のいくつかのビューを開くとき:NCは、すべてのそれらの上に閉じるボタンを持っていると私はそれをクリックしたときに使用してNCを閉じるには、いくつかのビューコントローラを持っていますビュー私が手:開かれたビューで

Unbalanced calls to begin/end appearance transitions for 

もviewWillAppearは呼び出されません。だから、NCを正しく閉鎖しているかどうか誰にでも教えてもらえますが、エラーを防ぐための方法がいくつかあります。

EDIT1:?(:真、完了:ゼロアニメーション)

self.navigationControllerする.dismiss?(アニメーション:真、完了:ゼロ)だけに が からcontroller.navigationController .dismissを閉じるコールを変更質問をより簡単にする。

も疲れ:

self.dismiss(animated: true, completion:nil) 

EDIT2: は、それがUITabbarController上にあるか、単にすでに悪いNC上にあるVCからのNCがTabbarControllerのタブとしてNavigationControllersを持つように開くことが多分悪いですか?

+0

'self.navigationContro ...... ["アンバランスのコールへの ' –

+0

可能な重複複数の詳細ビューコントローラをプッシュするときにDetailViewControllerの開始/終了の外観トランジション」を参照してください(0120-18753)。 –

+0

@ Oleg Gordiichukはそうは思わない、sinc私が決して他のNCに電話をしていない場合は、問題は表示されません – schmru

答えて

2

あなたは、そのコントローラの側からコントローラを閉じる必要があります。

// place this to the target controller, which handles you that modal view 
self.dismiss(animated: true) { 
    //completion: 
} 

または

self.dismiss(animated: true, completion:nil) 
+0

この行で私は問題がさらに速くなりますが、提案に感謝します – schmru

+0

その行はどこに置いてありますか?どのような方法で? – pedrouan

+0

私はself.navigationControllerを置き換えましたか?.dismiss(アニメーション:true、完了:なし) – schmru

関連する問題