RxSwift | Инициализируйте и pu sh UIViewController в закрытии - PullRequest
0 голосов
/ 28 марта 2020

Например, у нас есть три UIViewControllers: A, B, C.

  1. Мы нажимаем B из A .

  2. В B мы вызываем некоторый API:

func getProduct(productNumber: String) {
        someService.rxGetProduct(productNumber: productNumber)
            .asObservable()
            .trackActivity(loading)
            .subscribe(onNext: { [weak self] product in
                guard let `self` = self else { return }
                let cViewModel: CViewModel = .init()
                let cViewController: CViewController = .init(viewModel: cViewModel)
                self.navigationController?.pushViewController(cViewController, animated: true)
            }, onError: { [weak self] error in
                // error handling
            }).disposed(by: disposeBag)
}
В методе, приведенном выше, мы получаем некоторую модель продукта и нажимаем C на закрытие контроллера.

Проблема в том, что когда мы возвращаемся из C контроллера просмотра к B контроллера просмотра - C Контроллер представления не деинициализируется. C контроллер представления деинициализируется, когда мы возвращаемся из B контроллера просмотра к A контроллеру представления.

Что я делаю неправильно

1 Ответ

0 голосов
/ 28 марта 2020
  1. Возможно, вы создаете цикл сохранения в пределах trackactivity или любого другого значения loading, равного
  2. , рассмотрите возможность использования take(1) и asSingle() в случае, если ваша наблюдаемая не предназначена для завершения.
...