UINavigationController (drawRect :) - PullRequest
       7

UINavigationController (drawRect :)

1 голос
/ 01 апреля 2010

Я создал приложение с TabBarController, 4 TabBarItems, и каждый TabBarItem имеет собственный файл NavigationController (все, что создано в IB).

Я использую функцию drawRect для разработки моей панели навигации:



@implementation UINavigationBar (customImage)

-(void)drawRect:(CGRect)rect {

  UIImage *image = [UIImage imageNamed:@"MyImage.png"];
  [image drawInRect:CGRectMake(0,0, self.frame.size.width,self.frame.size.height)];

}

@end

Проблема в том, что NavigationBar изменяется для каждого ViewController внутри моего приложения, мне нужно только нарисовать NavigationBar только для одного TabBarItem и использовать панель навигации по умолчанию для другого контроллера.
Как это сделать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

Хорошо,

Он занял у меня много времени, но я нашел решение. Используя метод Swizzling, я могу делать все, что захочу. Посмотрите эту ссылку для получения дополнительной информации о том, как ее реализовать.

0 голосов
/ 01 апреля 2010

Использование категории, вероятно, не лучшая идея в этом случае (если вы переопределите drawRect:, используя категорию, все UINavigationController s будут затронуты). Вам лучше было бы создать подкласс UINavigationController и использовать пользовательский подкласс только на той вкладке, которую вы хотите.

Редактировать: Субклассирование UINavigationController довольно просто:

(в файле .h)

@interface MyCustomNavigationController : UINavigationController {
}
@end

(в файле .m)

@implementation MyCustomNavigationController

-(void)drawRect:(CGRect)rect {
    //custom drawing here
}
@end

Затем используйте MyCustomNavigationController вместо UINavigationController в своем коде, где это необходимо. Категории (которые вы использовали в образце) хороши для добавления вспомогательных методов к существующим классам, но могут быть опасны при замене уже существующих методов (поскольку ваш пользовательский метод заменит исходный для всех применений).

...