Можете ли вы обойти поведение категории в Objective-C? - PullRequest
1 голос
/ 06 ноября 2011

У меня есть категория на UINavigationBar, функция drawRect которой рисует собственный логотип на панели навигации.В моем приложении есть один контроллер вида, для которого я бы не хотел бы нарисовать собственный логотип.

Есть ли способ обойти функцию drawRect категории?

Ответы [ 4 ]

2 голосов
/ 06 ноября 2011

Используйте два разных подкласса UINavigationBar и поместите категорию в один из двух подклассов.

1 голос
/ 06 ноября 2011

Нету; ты не можешь Или, вы можете (через пьянство), но вы не должны. А именно, вы изменяете поведение системы, что является хорошим способом либо вызвать сбои в будущем, либо потенциально отклонить ваше приложение.

Как правило, если вы хотите настроить поведение класса, вы делаете это путем создания подклассов и использования экземпляров подкласса.

0 голосов
/ 06 ноября 2011

Это проблема, с которой вы больше не столкнетесь в ios5, поскольку использование категории для «переопределения» drawRect на панели навигации больше не поддерживается.

Вам следует изучить новые изменения UIAppearance или, как говорит Дэниел, использовать несколько подклассов UINavigationBar.

0 голосов
/ 06 ноября 2011

Вы, вероятно, делаете что-то не так, против HIG, если вам нужно это сделать.

Мэтт Галлахер написал статью о вызове 'последующей' реализации , которую можно использоватьв данном случае.

Обратите внимание, что это неправильный способ достижения такой цели, даже если она работает сейчас, и в будущем она, скорее всего, сломается, я бы посоветовал не использовать такие методы!

...