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