嗨我准备ios开发人员
对不起,因为英语说得不好
我想知道一般如何执行。
订阅数组数据并创建自定义视图
doTableViewModel.doItems
.observe(on: MainScheduler.instance)
.subscribe(onNext: { viewModelItems in
self.doTableView.reloadData(viewModelItems: viewModelItems)
// make and draw view
// after view create event
self.doTableView.doItemViews.forEach{ doItemView in
let item = doItemView.doItem
doItemView.rx.tapGesture()
.when(.recognized)
.subscribe(onNext: { element in
print(item.doID)
}
).disposed(by: self.disposeBag)
doItemView.checkButton.rx.tapGesture()
.when(.recognized)
.subscribe(onNext: { _ in
self.tappedDoItemCheck(viewDoItem: item)
}
).disposed(by: self.disposeBag)
doItemView.deleteButton.rx.tapGesture()
.when(.recognized)
.subscribe(onNext: { _ in
self.tappedDoItemRemove(doItem: item)
}
).disposed(by: self.disposeBag)
doItemView.editButton.rx.tapGesture()
.when(.recognized)
.subscribe(onNext: { element in
self.tappedDoItemEdit(doItem: item)
}
).disposed(by: self.disposeBag)
}
self.doTableView.configureLayer()
})
.disposed(by: disposeBag)
订阅......我不知道这种方式是否正确。
1条答案
按热度按时间ccrfmcuu1#
这是不正确的。
self
。subscribe(onNext:)
,而不是很多。)我更希望看到如下代码:
要使上述代码正常工作,您需要将其他代码移到DoTableView和DoItemView中,如下所示:
请注意,使用上面的代码,
DoItemView
不再需要doItem
属性。可以删除该属性。与RxSwift无关的一个问题是,它假设DoTableView在每次调用
reloadData(viewModelItems:)
方法时完全销毁并重建其DoItemView。这是非常低效的。最好使用普通的UITableView或构建您的DoTableView,以便它可以像UITableView重用其单元格一样重用DoTableView。