首页 > 解决方案 > swift - performSegue 在 RxSwift Observable 中不起作用

问题描述

我有以下代码:

loginViewModel.facebookLogin
.asObservable()
subscribe() { [unowned self] facebookLogin in
     if let isLoggedIn = facebookLogin.element?.isLoggedIn {
         if isLoggedIn {
              elf.performSegue(withIdentifier: "toRestaurantSelect", sender: self)
              }
      }

     if let didLoginFail = facebookLogin.element?.didLoginFail {
         self.errorLabel.isHidden = !didLoginFail
     }
  }
.disposed(by: disposeBag)

facebookLogin 是一个变量,并在用户登录时更新。但是,不调用 performSegue(条件为真)。奇怪的是,如果我在模拟器中打开慢速动画,则会执行 segue。关闭慢速动画时,segue 不会执行(Facebook 登录有效)。任何帮助表示赞赏。谢谢!

标签: iosswiftrx-swift

解决方案


我认为您应该使用主线程使其工作

    loginViewModel.facebookLogin
        .asObservable()
        .subscribe() { [unowned self] facebookLogin in
            if let isLoggedIn = facebookLogin.element?.isLoggedIn {
                if isLoggedIn {


                    DispatchQueue.main.async {
                        self.performSegue(withIdentifier: "toRestaurantSelect", sender: self)

                    }



                }
            }

            if let didLoginFail = facebookLogin.element?.didLoginFail {
                self.errorLabel.isHidden = !didLoginFail
            }
        }
        .disposed(by: disposeBag)

推荐阅读