私は、私の.rootViewControllerとしてUINavigationControllerを持った簡単なテストプロジェクトを持っています。 私は最初のViewControllerを+ボタンを右のボタンの項目として押します。私は新しいViewController(前のものと同じです)を表示するためにそのタップを購読します。 プッシュセグは私の期待通りに機能します。RxSwift/RxCocoaでUINavigationControllerの戻るボタンを購読します
UIKitは私のために戻るボタンを管理しています。私はそれがシーンの背後にある魔法を作るUINavigationControllerだと思います。
ここで、私はバックボタンを購読する必要がありますが、これを行う方法が見つかりません。 私は を.rx.tap?.backBarButtonItem?.rx.tap 2)navigationController.navigationItem.backBarButtonItem 1)navigationController.navigationBar.backItemで試してみましたが、彼らがnilであるように見えるので、オプションのチェーンは、サブスクリプションを防ぐことができます。あなたの助けのための
おかげで、Luca-
なぜ戻るボタンを購読する必要がありますか?現在のビューコントローラがナビゲーションコントローラのスタックからポップされ、以前のビューコントローラが新しい現在のビューコントローラになります。新しい現在のView Controllerが何かを行う必要がある場合は、そのコードを 'viewWillAppear(animated:)'メソッドに置く必要があります。このメソッドは、View ControllerがNavコントローラ上で最も上になるたびに呼び出されますまたはモーダルで表示されます。 – NRitH
NRitHありがとうございます。 ViewControllerのナビゲーションがRxSwift/RxCocoaでどのように機能するかを調べています。私は、ViewControllerとViewModelsをインスタンス化するコーディネーターを持っていたいと思います。私は、これらのコーディネータオブジェクトによってナビゲーションを調整し、ユーザがいつ戻るボタンをタップするかを知る必要があると考えています。とにかく、これは私の心ではかなり混乱していますが、viewController.rx.sentMessage(#selector(UIViewController.viewWillDisappear(_ :)))はあなたの提案どおりに動作します。 – Luca