после представления нового UIViewController по коду, каждый раз (в viewModel или viewController), используя .Drive, я получаю эту ошибку: drive* family of methods can be only called from MainThread
вот как я представляю новый ViewController:
func goToVerifyPage() {
let verifyVC = VerifyViewController()
verifyVC.modalTransitionStyle = .flipHorizontal
self.present(verifyVC, animated: true, completion: nil)
}
и внутри VerifyViewController:
override func viewDidLoad() {
super.viewDidLoad()
confirmVerifyCodeBTN.rx.tap
.asDriver()
.debounce(1)
.filter({
self.viewModel.signupEnabled
})
.drive(onNext:{ [weak self] _ in
guard let verifyCode = self?.verificationCodeTF.text else { return }
self?.verifyActivateCode(verifyCode)
}).disposed(by: disposeBag)
}
ошибка, показанная после строки execute .filter.
в предыдущей версии viewController (с именем loginViewController) Я использую те же коды, но не получаю никакой ошибкиединственное, что отличается между verifyViewController и loginViewController, это использование раскадровки для представления этого ViewController (loginViewController).
update: , когда я использую эти коды для представления verifyViewController, все идет нормально:
func goToVerifyPage() {
DispatchQueue.main.async {
let verifyVC = VerifyViewController()
verifyVC.modalTransitionStyle = .flipHorizontal
self.present(verifyVC, animated: true, completion: nil)
}
}