gpt4 book ai didi

ios - RxSwift - 自动重新加载使用 Observable 初始化的 UITableView

转载 作者:行者123 更新时间:2023-11-29 11:38:27 25 4
gpt4 key购买 nike

我有主要的 UITableView 和一些使用 Observables 数组填充的待办事项:

// on viewDidLoad
self.todosViewModel.todos.asObservable()
.bind(to: tableView.rx.items(cellIdentifier: "TodoViewCell", cellType: TodoTableViewCell.self)) { (row, todo, cell) in
cell.status.image = todo.getStatusImage()
cell.title.text = todo.title.value
cell.todoDescription.text = todo.description.value
cell.dueDate.text = String(describing: Utilities.dateFormatter.string(from: todo.dueDate.value))
}.disposed(by: disposeBag)

在另一个屏幕上,我可以添加/编辑数据,然后单击“保存”按钮以附加新的待办事项或修改正在编辑的待办事项。这很好用,除了 tableView 不会自动重新加载,迫使我在 viewDidAppear 上调用 tableView.reloadData(),它被触发当另一个屏幕被关闭时。

所以,

todosViewModel 变量更新 时,是否有一种 native 方法可以让我自动重新加载表格?

编辑:

如果在 todo 版本的屏幕上,我将 todosViewModelvalue 属性重新关联为相同的值,它也有效:

self.todosViewModel.todos.value = self.todosViewModel.todos.value

这很丑陋,但我只知道如何使用其中一种方法重新加载 tableView。

最佳答案

When I append a new todo or reassociate a new value to the base todos it works. When I edit, no.

这就是重点。对于要更新的​​ UITableView,您的 todos 必须在编辑了其中的项目时发出,或者您必须将 todo 中的内容绑定(bind)到单元格(这样你就不能改变单元格的高度,但你可以将一些动态信息推送到单元格上)。

另一种选择是将一些可观察对象从 todo 映射到显示它的单元格的索引,然后调用 UITableView.reloadRows 来更新您编辑的单元格。

我建议你看看RxDataSources examples .

关于ios - RxSwift - 自动重新加载使用 Observable 初始化的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47860635/

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