ios – RxSwift重载tableview

前端之家收集整理的这篇文章主要介绍了ios – RxSwift重载tableview前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. let officialAccountObservable : Observable<[SearchUser]> = SearchAPI.sharedAPI.suggestAccounts()
  2.  
  3. officialAccountObservable.bind(to: tableView.rx.items(cellIdentifier: "followcell",cellType: FollowCell.self)) {
  4. (index,user,cell) in
  5. if user.profileImagePath.isEmpty == false {
  6. cell.profile.af_setImage(withURL: URL.init(string: user.profileImagePath)!)
  7. }else {
  8. cell.profile.image = UIImage.init(named: "icon_user_03")
  9. }
  10. cell.nickName.text = user.nickName
  11.  
  12. cell.follow.rx.tap
  13. .debounce(0.3,scheduler: MainScheduler.instance)
  14. .subscribe(onNext: {
  15. [unowned self] in
  16. cell.setFollow(user: user,completion: { (result) in
  17. if(result == true){
  18.  
  19. }
  20. })
  21. }).addDisposableTo(self.disposeBag)
  22. }.addDisposableTo(disposeBag)
  23.  
  24. func suggestAccounts() -> Observable<[SearchUser]> {
  25.  
  26. let uri = Constants.VyrlSearchURL.suggestUsers
  27.  
  28. return Observable.create { observer in
  29. let request = Alamofire.request(uri,method: .get,parameters: nil,encoding: JSONEncoding.default,headers: Constants.VyrlAPIConstants.getHeader()).responseArray { (response: DataResponse<[SearchUser]>) in
  30. let value = response.result.value
  31.  
  32. observer.onNext(value!)
  33. observer.onCompleted()
  34. }
  35.  
  36. return Disposables.create(with: request.cancel)
  37. }
  38. }

我想在代码中重新加载表视图(result == true)
对于重新加载,必须收到OfficialAccountObservable.
我的代码已经全部结束,我想知道如何在该状态下更新它.

解决方法

AFAIK,这是这样做的标准方式 –
  1. let source = PublishSubject<Observable<[SearchUser]>>()
  2. let officialAccountObservable: Observable<[SearchUser]> = source.switchLatest()
  3. source.onNext(suggestAccounts()) // every call will refresh your table

猜你在找的iOS相关文章