Вам, вероятно, понадобятся два метода, обусловленные версией ОС. Это связано с тем, что в версии 5.0 и более поздних версиях функция drawRect не вызывается. Вместо этого в версии 5.0 есть собственные процедуры для пользовательской панели навигации. В итоге я использовал методы 4.0 и 5.0, а также определял версию и выбирал подходящую во время выполнения.
Что касается первого метода, я не понимаю, зачем вам действительно нужен конструктор интерфейсов. Просто программно создайте экземпляры своих объектов и добавьте их в качестве подпредставлений. Сам построитель интерфейсов не делает ничего большего — это просто более удобный способ работы с ними.
personOwen Hartnettschedule12.01.2012
comment
Причина, по которой используется IB, заключается в том, что navigationBar на UINavigationController доступен только для чтения. Но, создав подкласс и изменив класс панели навигации в IB, вы можете заставить контроллер навигации заполнить его свойство navigationBar экземпляром вашего подкласса, который реализует -drawRect:.
- personMark Adams; 12.01.2012
comment
Оуэн, можешь поделиться своим методом?
- personVan Du Tran; 13.01.2012
На самом деле, нет необходимости изменять методы, добавлять категории или использовать Interface Builder, вместо этого вы можете создать подкласс UINavigationBar и использовать NSKeyedUnarchiver, чтобы изменить класс UINavigationController.navigationBar на свой пользовательский подкласс.