RxSwift не возвращает данные sh с одного ViewController на другой - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь вернуть sh данные из SecondViewController в FirstViewController. Я пытаюсь сделать это, используя тип PublishSubject RxSwift. Когда я перехожу в FirstViewController, я получаю только информацию о том, что я нажал в консоли. Я просто хочу получить эти данные в объекте testArray, который будет показан в UITableView. Там нет ошибки отображения данных в UITableView, я проверил. Любые идеи? ;)

FirstViewController.swift

let disposeBag = DisposeBag()

@objc func addCryptoButtonPressed() {
    DispatchQueue.main.async {
        let viewController = SecondViewController()
        viewController.subject
            .subscribe(onNext: { [weak self] pushedData in
                print(pushedData)                         // <----- it is working
                self?.testArray.append(pushedData)        // <----- it is not
            }).disposed(by: self.disposeBag)
        DispatchQueue.main.async {
            self.mainTableView.reloadData()
        }
        self.navigationController?.pushViewController(viewController, animated: true)
    }
}

SecondViewController.swift

let subject = PublishSubject<String>()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    DispatchQueue.main.async {
        let name = self.names[indexPath.row]
        self.subject.onNext(name)
        let viewController = FirstViewController()
        self.navigationController?.pushViewController(viewController, animated: true)
    }
}

1 Ответ

0 голосов
/ 30 апреля 2020

Я понял, почему это не работает. В SecondViewController в методе didSelectRowAt я использовал pushViewController для перехода к FirstViewController - я удаляю это. Тогда я разрешил вернуться через кнопку «Назад»: navigationItem.setHidesBackButton(false, animated: true)

Но теперь мой вопрос - почему он не работал, когда я использовал pushViewController?

...