Может класс ViewModel соответствует UITableviewDelegate и UITableViewDataSource в iOS согласно MVVM - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть viewcontroller, который отображает табличное представление со сложным пользовательским интерфейсом и различными типами данных в зависимости от определенных условий / типа пользователя. Это включает в себя логику для разделения и обработки данных по выбору пользователя и скрытия / отображения раздела «развернуть / закрыть». Поскольку я использую шаблон MVVM, может ли мой класс viewmodel соответствовать UITableviewDelegate и UITableViewDataSource, чтобы у меня был более тонкий viewcontroller?

Что-то вроде -

class HomeViewController: UIViewController {

 .
 .

  let viewModel = HomeViewModel()

  @IBOutlet weak var tableView: UITableView!

 .
 .

  tableView.delegate = viewModel
  tableView.dataSource = viewModel
}

class HomeViewModel: UITableViewDataSource, UITableViewDelegate {

//Implement delegates

}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Да, вы можете установить любой объект, который соответствует этим протоколам, в качестве делегата, источника данных или разделить их на разные объекты, любой и любой может реализовать протокол.

При написании источника данных или делегата со сложным табличным представлением лучше определить тип, целью которого является создание источника данных табличного представления. Это помогает лучше разделять обязанности между объектами.

Вы можете найти пример того, как Apple реализует различные объекты в качестве источника данных представления таблицы / коллекции здесь: Продвинутые пользовательские интерфейсы с коллекционными представлениями от apple

Эти объекты не обязательно должны быть вашей viewModel, но посмотрите хороший пример, когда это: MVVM с viewModel в качестве источника данных таблицы

0 голосов
/ 05 сентября 2018
tableView.delegate = viewModel
tableView.dataSource = viewModel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...