В моем приложении есть протокол:
public protocol ViewModel {}
public protocol ConfigurableView where Self: UIView {
func configure(with viewModel: ViewModel)
}
Очевидно, что целью этого является стандартизация моего подхода ViewModel.
Когда я применяю вызов конфигурации в cellForRowAt: метод:
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: tableViewCellType(for: indexPath).reuseIdentifier, for: indexPath)
let item = sections[indexPath.section][indexPath.item]
let viewModel = process(item: item)
(cell as? ConfigurableCell)?.configure(item:item)
return cell
}
Я вижу странное поведение - по сути, ячейка имеет правильный тип и имеет свойства, которые я ожидаю внутри этого метода, но как только она передается в метод configure, все ее пользовательские свойства (UILabels и т. Д.)) ноль.Как будто он сделал копию ячейки без передачи всех свойств.Это совершенно другой указатель, когда код попадает внутрь метода configure.
Что мне здесь не хватает?Я пытался воссоздать это на детской площадке, и я не могу, что заставляет меня подозревать, что это что-то странное в снятии очереди с клеток.