#ios #uitableview #model-view-controller #software-design
#iOS #uitableview #модель-представление-контроллер #разработка программного обеспечения
Вопрос:
У меня есть вопрос о дизайне бизнес-логики контроллера в iOS,
когда у меня есть ViewController, который можно повторно использовать для нескольких страниц, и некоторые разные элементы, такие как заголовок navigationItem, вызов API, разная высота ячейки или типы, каков правильный способ сделать это?
Что я сейчас делаю, так это добавляю для него перечисление, что-то вроде
enum(controllerType) {
typeA
typeB
}
И для каждого метода нужно настраивать разные элементы, я делаю что-то вроде этого
switch type {
case typeA:
//Changes for type A
case typeB:
//Changes for type B
}
Особенно иногда для TableViewController требуется добавить конфигурацию другого типа ячейки в некотором типе, поэтому делегат TableView и источник данных будут иметь сложную бизнес-логику
Слегка оптимизируйте, например, отдельный делегат / источник данных в другом файле или категории / расширении, отделите бизнес-логику от другого типа файла, такого как ‘ViewModel’, и используйте метод в ViewModel вместо тяжелой логики в ViewController, но в ViewModel все равно будут большие методы, так каков правильный способ проектирования повторно используемого контроллера?
Ответ №1:
Вы можете установить свойство string (например, isComingFrom), с какого контроллера вы исходите, и поместить проверку этой строки в ваш общий контроллер представления, который повторно используется. Надеюсь, это поможет вам.