2013-05-31 2 views
0

Я создаю приложение, которое содержит несколько контроллеров представления. Каждый VC включает объект UITabBar (вставка через Storyboard). Я создал класс, который расширяет UITabBar для настройки TabBarItems и т. Д.Как я могу улучшить свой код и удалить дубликат кода?

Для обнаружения кранов на панели вкладок мои VC включают UITabBarDelegate, и каждый из них реализует didSelectItem.

Мой вопрос в том, как я могу улучшить свой код и удалить весь этот дублирующий код, который существует под каждым VC, который реализует didSelectItem? Могу ли я каким-то образом получить этот код, а затем все эти VC смогут его получить и обнаружить краны?

Я хотел бы сохранить информацию о том, какой элемент был нажат из предыдущего представления и оставить его нажатым на новом представлении.

+2

Вы всегда можете реализовать didSelectItem в общем суперклассе, если это имеет смысл. –

+1

Есть ли причина, по которой вы не используете UITabBarController для управления панелью вкладок и различными контроллерами представлений? Жизнь намного проще, когда вы плаваете с текущим, а не против него. – Caleb

+0

@HotLicks Что значит общий суперкласс? – OutOfBoundsException

ответ

1

Как указано в комментариях, вы можете реализовать метод делегата в любых обычных суперклассах. Другая идея: делегаты не ограничиваются классом, к которому принадлежит элемент. Вы можете создать один класс, предназначенный для обработки методов делегатов панели вкладок, и сделать этот класс делегатом каждой панели вкладок.

Этот класс будет применять необходимые методы и на основе идентификаторов или какой-либо другой системы обрабатывать все, что угодно, от любого VC любым желаемым способом.

+0

Спасибо за ваше время. Поскольку я новичок в Obj-C, не могли бы вы предоставить мне очень простой пример, как я могу это достичь? – OutOfBoundsException

+0

То, что я пытаюсь достичь, намного сложнее, чем я думал. – OutOfBoundsException

Смежные вопросы