如何向我的 UITableViewCell 添加部分?
How can I add sections to my UITableViewCell?
如何使用 Bond 框架向我的 UITableViewCell 添加部分?
self.viewModel.items.bind(to: self.tableView) { (item, indexPath, tableView) -> UITableViewCell in
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ListCell.self),
for: indexPath) as! ListCell
cell.item = item[indexPath.row]
return cell
}.dispose(in: self.bag)
关于源代码,
如果你只想覆盖一个标题,你应该覆盖这个 class 并为
实现相应的逻辑
open class TableViewBinderDataSource<Changeset: SectionedDataSourceChangeset>: NSObject, UITableViewDataSource
但是如果你想实现完全自定义的视图,这就复杂多了。我不认为这对这个图书馆来说是可能的。原因是你应该重写UITableViewDelegate
,但是它用在public protocol ReactiveExtensions
中不能被重写。
你必须写这个class
class CustomSection<Changeset: SectionedDataSourceChangeset>: TableViewBinderDataSource<Changeset>, UITableViewDelegate where Changeset.Collection == Array2D <String, ListItemViewModel> {
@objc func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return changeset?.collection[sectionAt: section].metadata
}
并且在您 ViewController 的 viewDidload 中,您必须调用此函数。
private func setupViewModel() {
let sectionBindingDatSource: CustomSection = CustomSection<TreeChangeset>{ (changeset, indexPath, tableView) -> UITableViewCell in
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ListCell.self), for: indexPath) as! ListCell
cell.item = changeset.sections[indexPath.section].items[indexPath.row]
return cell
}
self.viewModel.sections.bind(to: self.tableView, using: sectionBindingDatSource)
}
如果您想覆盖 TableViewDataSourse 的功能并自定义部分,您必须设置委托
self.tableView.delegate = sectionBindingDatSource
如何使用 Bond 框架向我的 UITableViewCell 添加部分?
self.viewModel.items.bind(to: self.tableView) { (item, indexPath, tableView) -> UITableViewCell in
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ListCell.self),
for: indexPath) as! ListCell
cell.item = item[indexPath.row]
return cell
}.dispose(in: self.bag)
关于源代码,
如果你只想覆盖一个标题,你应该覆盖这个 class 并为
实现相应的逻辑open class TableViewBinderDataSource<Changeset: SectionedDataSourceChangeset>: NSObject, UITableViewDataSource
但是如果你想实现完全自定义的视图,这就复杂多了。我不认为这对这个图书馆来说是可能的。原因是你应该重写UITableViewDelegate
,但是它用在public protocol ReactiveExtensions
中不能被重写。
你必须写这个class
class CustomSection<Changeset: SectionedDataSourceChangeset>: TableViewBinderDataSource<Changeset>, UITableViewDelegate where Changeset.Collection == Array2D <String, ListItemViewModel> {
@objc func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return changeset?.collection[sectionAt: section].metadata
}
并且在您 ViewController 的 viewDidload 中,您必须调用此函数。
private func setupViewModel() {
let sectionBindingDatSource: CustomSection = CustomSection<TreeChangeset>{ (changeset, indexPath, tableView) -> UITableViewCell in
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ListCell.self), for: indexPath) as! ListCell
cell.item = changeset.sections[indexPath.section].items[indexPath.row]
return cell
}
self.viewModel.sections.bind(to: self.tableView, using: sectionBindingDatSource)
}
如果您想覆盖 TableViewDataSourse 的功能并自定义部分,您必须设置委托
self.tableView.delegate = sectionBindingDatSource