Rx tableView仅给我单元格中的最后一个值,尽管有许多数据对象

问题描述 投票:0回答:1

我有一个RxTableView,它正在绑定来自relay的数据。当我检查binding之前的数据时,大约有10个数据对象,但是tableView cell仅显示最后一个数据对象。

在我的viewModel中,我重新加载了method

var bufferEvent = ReplaySubject<EventModel>.create(bufferSize: 99)
let content = BehaviorRelay<[EventStatusTableViewCellViewModel]>(value: [])


func reloadTableViewContent() -> Observable<EventModel> {
    return eventService.bufferEvent.do(onNext: { event in
        print("THIS RETURNS 8 OBJECTS", event.id)
        self.content.accept([EventStatusTableViewCellViewModel(eventStatus: event)])
    })
}

打印返回8个对象。在我的viewController中,我叫viewModel.reloadTableViewContent().subscribe().disposed(by: diposeBag)

并设置bindings

private func setBindings() {
    print("THIS IS ZERO", viewModel.content.value.count)

    viewModel.content.bind(to: tableView.rx.items(cellIdentifier: EventLogTableViewCell.identifier, cellType: EventLogTableViewCell.self)) { row, data, cell in
        cell.viewModel = data
    }.disposed(by: disposeBag)
}

tableView仅显示最后一个对象,但由于某些原因而忽略其余对象。

为什么这不起作用?让我知道是否需要显示其他代码,例如cell

ios swift tableview rx-swift
1个回答
1
投票

1。不需要功能reloadTableViewContent(),您认为RX是必须的。相反,只需将这两个主题绑定一次,而不必担心其余主题,因为它们是反应性和响应性的。

2。通知.toArray(),您忘了收集元素以使其成为数组。

eventService.bufferEvent.toArray().asDriver(onErrorJustReturn: []).drive(content)
© www.soinside.com 2019 - 2024. All rights reserved.