Это интересный вопрос, и я также борюсь за то, как правильно разделить ответственность. Все зависит от контекста, но так как тестирование подклассов UIVieController может быть трудной задачей, я стараюсь как можно больше перемещаться в классы моделей. В духе Skinny Controller, модель Fat .
Когда дело доходит до таблиц, я создал класс базовой модели для обработки всех элементов табличного представления, в основном инкапсулируя то, что вы получаете при создании нового проекта базовых данных на основе навигации. В контроллере я просто перенаправляю вызовы к моей модели стола.
Я стараюсь, чтобы методы контроллера были как можно меньше. В зависимости от контекста у меня может быть несколько классов моделей, каждый из которых отвечает за определенную часть.
Я также рассмотрел возможность использования заводов контроллеров для получения детальных контроллеров для определенных моделей данных.
UIViewController *detailController = [self.controllerFactory controllerForItem:item];
[self presentModalViewController:detailController animated:YES];
Таким образом, я могу выполнить модульное тестирование, чтобы получить соответствующий контроллер для определенного элемента данных без необходимости задействовать родительский контроллер.