我的iOS App中有tableview
我使用以下代码初始化表
var cnList : Observable<[CountryCode]>?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cnList = readJson()
cnList?.bindTo(cTableView.rx.items(cellIdentifier: "country_code_cell")) {
_, countryCode, cell in
if let countryCodeCell = cell as? CountryCodeTableViewCell {
countryCodeCell.cNameLabel.text = countryCode.name
countryCodeCell.cCodeLabel.text = countryCode.dial_code!
}
}.addDisposableTo(disposeBag)
}
现在我有一个文本字段,我想根据该文本字段的文本
过滤cList按下按键
可打印文字searchTextField.rx.text.asObservable().subscribe(onNext: {
text in
if text != nil && text != "" {
// need to filter cnList and update tableview here i think but how ??
}
}).addDisposableTo(disposeBag)
但我不确定如何过滤cnList
并更新table view
那怎么办?
答案 0 :(得分:2)
也许是这样的:
首先将var cnList : Observable<[CountryCode]>?
更改为var cnList : Variable<[CountryCode]>? = Variable([])
然后:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cnList.value = readJson()
cnList?.asObservable().bindTo(cTableView.rx.items(cellIdentifier: "country_code_cell")) {
_, countryCode, cell in
if let countryCodeCell = cell as? CountryCodeTableViewCell {
countryCodeCell.cNameLabel.text = countryCode.name
countryCodeCell.cCodeLabel.text = countryCode.dial_code!
}
}.addDisposableTo(disposeBag)
}
然后:
searchTextField.rx.text.asObservable().subscribe(onNext: {
text in
if text != nil && text != "" {
self.cnList.value = self.cnList.value.filter({//some logic})
}
}).addDisposableTo(disposeBag)
我不确定,但是应该用新值重新加载你的表格。