首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >swift - performSegue在RxSwift可观察订阅中不起作用

swift - performSegue在RxSwift可观察订阅中不起作用
EN

Stack Overflow用户
提问于 2018-06-04 01:07:31
回答 2查看 360关注 0票数 0

我有以下代码:

代码语言:javascript
复制
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 (条件为true)。奇怪的是,如果我在模拟器中打开慢速动画,segue就会被执行。当慢速动画被关闭时,segue不会执行( Facebook登录可以正常工作)。任何帮助都是非常感谢的。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 01:23:14

我认为你应该使用主线程来让它工作

代码语言:javascript
复制
    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)
票数 1
EN

Stack Overflow用户

发布于 2018-06-08 05:55:50

使用主调度器进行观察:

代码语言:javascript
复制
loginViewModel.facebookLogin
.asObservable()

// Switch to the main scheduler
.observeOn(MainScheduler.instance)


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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50668925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档