Как я могу добавить разделы к моей UITableViewCell? - PullRequest
3 голосов
/ 31 октября 2019

Как добавить разделы в мой UITableViewCell с помощью инфраструктуры Bond?

 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)

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Вы должны написать этот класс

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
        }

и в viewDidload вашего ViewController вы должны вызвать эту функцию.

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
0 голосов
/ 07 ноября 2019

Что касается исходного кода,

, если вы хотите переопределить только заголовок, вы должны переопределить этот класс и реализовать соответствующую логику для

open class TableViewBinderDataSource<Changeset: SectionedDataSourceChangeset>: NSObject, UITableViewDataSource

, но если вы хотите реализовать полностью пользовательскийПо мнению, это очень сложно. Я не думаю, что это возможно для этой библиотеки. причина в том, что вы должны переопределить UITableViewDelegate, но он используется в public protocol ReactiveExtensions, который не может быть переопределен.

...