Я создаю свое табличное представление программно
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()
}
Источник данных длямое табличное представление взято из наблюдаемой в моей модели просмотра
let menuItems = Observable.just([
"Recommended",
"Dashboard",
"Settings"
])
Проблема, с которой я столкнулся, заключается в том, что функция связывания не вызывается для 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 и сделал мою справедливую долю исследований. Я в тупике и мне нужна помощь.