Я создаю табличное представление программно
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 | ИНФОРМАЦИЯ | ["Рекомендуется", "Панель инструментов", "Настройки"] "
viewModel.menuItems
.bind(onNext: { items in
Logger.info("\(items)")
})
.disposed(by: self.disposeBag)
Я просмотрел документацию для правильной настройки источника данных tableview и провел немало исследований. Я в тупике, мне нужна помощь.