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