Я хотел бы иметь класс BaseViewController (который наследует от UIViewController) для моего проекта, который может выступать в качестве базового класса для других контроллеров представлений в моем проекте. Это должно добавить такие вещи, как общий прогресс HUD, кнопка обновления и механизм обновления сети, возможно, диалоговое окно с ошибкой, которое может быть настроено с текстом по каждому подклассу и т.д.
В принципе, я хочу добавить эту функциональность в подклассы UIViewController подклассов И UITableViewController, но я не могу вставить себя в иерархию классов UITableViewController, поэтому мне действительно нужен BaseUIViewController и BaseUITableViewController, но если я это сделаю, я должен дважды выполнить изменения и синхронизировать их.
Какой лучший подход для размещения единого кода, который должен быть доступен как для подклассов BaseViewController, так и для подклассов BaseTableViewController? Мне нужно только одно место в моем коде, где мне придется иметь дело с общими задачами.
1) Я подумал об использовании категории с ассоциативными ссылками, но проблема здесь в том, что мне нужно иметь пользовательскую реализацию классов жизненного цикла ViewController, таких как viewDidLoad:, и это не очень хорошая идея.
2) Я мог полностью пропустить UITableViewController и создать свой собственный BaseTableViewController из BaseViewController, внедряя методы tableView delegate и datasource, но я не очень хочу пропускать контроллер apple здесь.
3) Я мог бы наследовать BaseViewController от UIViewController, BaseTableViewController, наследующий от UITableViewController, и просто поместить вызовы специальных методов в третий файл ViewControllerBaseMethods, который может быть вызван из обоих файлов Base, Возможно, все еще будет дублирование свойств, но по крайней мере код метода будет находиться в одном месте.
Любые другие хорошие подходы к этому типу?