我已经像这样初始化了一个空的可观察对象:
var subCategories = Observable<[String]>.empty()
我如何检查可观察对象是否为空?如果可观察对象为空,我想向用户显示“空视图”,否则在 tableview 中显示数据。
我已经像这样初始化了一个空的可观察对象:
var subCategories = Observable<[String]>.empty()
我如何检查可观察对象是否为空?如果可观察对象为空,我想向用户显示“空视图”,否则在 tableview 中显示数据。
创建一个 bool Observable 来显示/隐藏你的 emptyView:
let hideEmptyView = subCategories.map{!$0.isEmpty}
hideEmptyView然后将此Bool Observable绑定到yourEmptyView.rx.isHidden
您必须在 Observable 上使用过滤器:
viewModel.filteredUsers.asObservable()
.filter({ [weak self] array in
guard let self = self else {return true}
if array.isEmpty {
self.emptyListContainer.alpha = 1
self.tableView.alpha = 0
} else {
self.emptyListContainer.alpha = 0
self.tableView.alpha = 1
}
return true
})
.bind(to: tableView.rx.items(cellIdentifier: "ContactsTableViewCell", cellType: ContactsTableViewCell.self)) { (row, user, cell) in
cell.titleLbl.text = user.name
}
.disposed(by: disposeBag)
使用Observable以外的BehaviourRelay。
import RxCocoa
import RxSwift
var subCategories = BehaviorRelay<[String]>(value: [])
let emptyView = UIStackView()
func addObservers() {
subCategories.asObservable().subscribe { _ in
self.emptyView.isHidden = !self.subCategories.value.isEmpty
}.disposed(by: DisposeBag())
}