2017-01-26 8 views
0

したがって、UINavigationControllerrootViewControllerがストーリーボードに設定されています。私はSwift:rootViewControllerにはビューがありません[Will/Did] Disappear methods called

var newController: UIViewController! 
// newController is initiated at some point 
... 
if let navigationController = self.navigationController { 
    navigationController.setViewControllers([newController]) 
} 

を使用してナビゲーションコントローラを(理由を尋ねるが、私のアプリで特定の遷移が新しいコントローラと交換するスタック全体を必要としない)に取って代わると私は視覚的遷移が発生見ることができるときはいつでも、どちらもviewWillDisappearまたはviewDidDisAppearメソッドが呼び出されます。その後、ナビゲーションコントローラのスタックを交換すると、期待どおりに呼び出されます。彼らが呼び出されるのを防ぐルートに特別なものがありますか?

+0

私は、ルートコントローラを切り替えるとビューが実際に消えていないためだと思います。あなたが取り除いているビューに対して 'dismiss(animated:false)'を呼び出すことを試みてください。 –

+0

モーダルで表示されているビューに対しては、却下されませんか? –

答えて

0

基本的にナビゲーションコントローラは、子コントローラがスタックの上に行くコントローラのスタックとして機能します。

あなたはナビゲーションコントローラからビューコントローラのデッキを削除したい場合は、あなたが彼らのルートにpopメソッドを使用する必要があります。

navigationController?.popViewController(animated: true)

これは、スタックのうちのすべてをポップアップ表示されます、あなたはなりますルートを他のコントローラに置き換えることができます。

この他の回答:How to detect if view controller is being popped of from the navigation controller?は、コントローラがポップアップしたときに検出する必要のあるさまざまなオプションを拡張しています。 isMovingFromParentViewControllerを使用してください。

関連する問題