разработка бизнес-логики контроллера iOS

#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), с какого контроллера вы исходите, и поместить проверку этой строки в ваш общий контроллер представления, который повторно используется. Надеюсь, это поможет вам.