在RxSwift中使用TableView,可以通过BehaviorRelay
来实现动态的设置numberOfRowsInSection
。下面是一个示例:
首先,在你的ViewModel中创建一个BehaviorRelay
来存储表格行数的数据:
import RxSwift
import RxCocoa
class ViewModel {
let numberOfRows = BehaviorRelay<Int>(value: 0)
// 其他代码...
}
然后,在你的ViewController中,绑定numberOfRows
到TableView的rx.items
属性,并使用bind(to:)
方法来设置表格行数:
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
let disposeBag = DisposeBag()
let tableView = UITableView()
let viewModel = ViewModel()
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
view.addSubview(tableView)
// 绑定数据源
viewModel.numberOfRows
.bind(to: tableView.rx.items(cellIdentifier: "Cell")) { (_, _, cell) in
// 配置cell
cell.textLabel?.text = "Row"
}
.disposed(by: disposeBag)
// 设置行数
viewModel.numberOfRows.accept(10)
}
}
通过上述代码,当numberOfRows
的值发生变化时,TableView的行数也会随之更新。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云