gpt4 book ai didi

ios - 使用 RxSwift 时未设置 Tableview 数据

转载 作者:行者123 更新时间:2023-11-29 05:16:35 26 4
gpt4 key购买 nike

我正在以编程方式创建我的表格 View

extension UITableView {
static var tableView: UITableView {
let tableView = UITableView()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "menuCell")
tableView.translatesAutoresizingMaskIntoConstraints = false
return tableView
}
}

我在 viewdidload 期间调用绑定(bind)函数

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()
}

我的表格 View 的数据源来 self 的 View 模型中的可观察

let menuItems = Observable.just([
"Recommended",
"Dashboard",
"Settings"
])

我遇到的问题是没有为tableview调用绑定(bind)函数。显然,可观察对象中有一些应该绑定(bind)的项目,但我所做的每一个可能的测试都从未执行过 tableview 绑定(bind)的主体。

为了证实我的理论,我在 setupBindings() 中测试了这段代码,并执行了它的主体,打印出“2019-12-01 16:36:18 | INFO | ["Recommended", "Dashboard", "设置"]"

viewModel.menuItems
.bind(onNext: { items in
Logger.info("\(items)")
})
.disposed(by: self.disposeBag)

我已经查看了正确设置 tableview 数据源的文档,并做了我应有的研究。 我很困惑,需要帮助。

最佳答案

真是愚蠢的错误。在我修复它之前,我的表格 View 约束看起来像这样

self.tableView.topAnchor.constraint(equalTo: appLabel.bottomAnchor, constant: 30).isActive = true
self.tableView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor).isActive = true
self.tableView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor).isActive = true

我忘记将 TableView 的底部约束设置为其 super View 。据我推断,这阻止了 TableView 在 View 中显示。如果没有显示它,就不可能设置 TableView 的数据源,正如 Arvin 在评论中指出的那样。

关于ios - 使用 RxSwift 时未设置 Tableview 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59130233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com