я читал, что у каждого UIView должен быть свой собственный ViewModel
Вы правы, но помните, что все более и более глубоко наблюдать MVVM для всех UIKit
компонентов может быть сложно и это получает много времени! поэтому я всегда советую учитывать ситуацию и сроки проекта.
также я предлагаю вам стиль кода . читайте о них, например, в ваших кодах заметили, что имя вашего класса начинается со строчной буквы myCell
, что не часто встречается.
ответьте на ваш вопрос:
запомните это: UITableViewCell
не должен быть доступен для модели.
Добавить новую модель представления для MyCell:
Это базовая c модель представления для обработки пользовательских таблиц ViewViewCell logi c и данных.
class MyCellViewModel {
private let model: CellModel
init(model: CellModel) {
self.model = model
}
}
// properties TableViewCell needs.
extension MyCellViewModel {
var title: Any {
return model.title
}
var someImage: Any {
return model.image
}
// add variables or functions...
}
Обновление пользовательского UITableViewCell, MyCell:
добавление необязательной переменной для хранения viewModel, а при просмотре модели didSet
- обновление представлений.
class myCell: UITableViewCell {
var viewModel: MyCellViewModel? {
didSet {
guard let viewModel = viewModel else { return }
// just an example
titleLabel.text = viewModel.title
}
}
}
Добавление в просмотр модели HomeViewController:
Теперь нам нужно передать модель представления пользователя UITableViewCell
из модели представления контроллера.
func viewModelForCell(atIIndexPath: IndexPath) -> MyCellViewModel {
return MyCellViewModel(model: articles[indexPath.row])
}
Эта базовая c реализация предназначена только для показа MVVM концепция избегания представления для доступа к модели и обработки всех логических процедур в View Model, конечно. Вы можете улучшить ее и адаптировать ее к своим потребностям, счастливое кодирование!