NightlyRevenger писал(а): 11 ноя 2020, 16:39
Newfag писал(а): 11 ноя 2020, 16:31
Чтобы уметь решать такие задачи нужно сначала знать что так вообще можно, столкнуться с проблемой и найти способы решения,
С такой проблемой сталкиваешься в любом проекте немногим больше хеллоуворлда
Но делают зачастую все на отъебись

Вот простой пример - создать таблицу с разными ячейками, все привыкли делать как в этом туториале
https://medium.com/@stasost/ios-how-to- ... f91a206429 - огромная портяна иф/елсов или свич/кейсов:
Плюс тонна кастов, ну хоть додумались свои модельки для каждого типа ячейки использовать, уже успех
А что если в таблице 100 разных ячеек? А что если какую-то ячейку нет возможности использовать внутри, а нужно получить из какого-нить сдк? Как обрабатывать тапы, опять строчить портяну? С размерами опять портяна? А что если в разных кейсах нужно использовать разных наследников таблицы (например при показе в фулскрине или в экншите), копипастить эти портяны?
Я сто лет назад написал штуку, которая умеет регать тип ячейки на тип модельки, пишешь что-нить типа:
CODE: Выделить всё
dataController.registerCell(MyTableViewCell.self, dataType: MyModel.self) { definition in
definition.size = 44
definition.configureHandler = { context in
context.cell.textLabel?.text = context.item // MyTableViewCell & MyModel here
}
definition.tapHandler = { context in
print(context.item) // MyModel here
}
}
Ячейки регаются в таблицу на лету, можно использовать с любой таблицей, можно вынести этот код и переиспользовать с разными таблицами в разных местах
Плюс этот же подход перенес на коллекшнвью и стеквью, дальше больше - понял, что портяны все равно присутствуют и перешел на дженерик протоколы, где ты тупа создаешь типизированный конфигуратор и пробрасываешь в этот дата контроллер, код стал еще чище.
И это лишь самый простой пример на ебаных таблицах, с которыми вообще никаких проблем быть не должно, но постоянно возникают
