我正在以编程方式创建我的 tableview
extension UITableView {
static var tableView: UITableView {
let tableView = UITableView()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "menuCell")
tableView.translatesAutoresizingMaskIntoConstraints = false
return tableView
}
}
我在 viewdidload 期间调用绑定函数
private func setUpBindings() {
guard let viewModel = self.viewModel else { return }
viewModel.menuItems
.bind(to: tableView.rx.items(cellIdentifier: "menuCell", cellType: UITableViewCell.self)) { [weak self] row, model, cell in
Logger.info("Called")
cell.selectionStyle = .none
cell.textLabel?.text = model.uppercased()
cell.textLabel?.textColor = self?.selectedRow == row ? .white : .darkGray
cell.backgroundColor = self?.selectedRow == row
? ColorPreference.mainColor
: UIColor.clear
}
.disposed(by: self.disposeBag)
self.tableView.reloadData()
}
我的 tableview 的数据源来自我的 viewmodel 中的一个 observable
let menuItems = Observable.just([
"Recommended",
"Dashboard",
"Settings"
])
我遇到的问题是绑定函数没有被调用tableview
。observable 中显然有一些项目应该被绑定,但我所做的每一个可能的测试都从未执行过 tableview 绑定的主体。
为了证实我的理论,我在 setupBindings() 中测试了这段代码并执行了它的主体,打印出 "2019-12-01 16:36:18 | INFO | ["Recommended", "Dashboard", "Settings"] "
viewModel.menuItems
.bind(onNext: { items in
Logger.info("\(items)")
})
.disposed(by: self.disposeBag)
我查看了正确设置 tableview 数据源的文档,并进行了相当多的研究。我很难过,需要帮助。