несколько категорий для UIToolbar - PullRequest
0 голосов
/ 07 марта 2012

Итак, у меня есть класс А, в котором у меня есть следующее:

@implementation UIToolbar (A)
- (void)drawRect:(CGRect)rect {

    UIColor *color = [UIColor colorWithWhite:0.0 alpha:1.0];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
    CGContextFillRect(context, rect);
    self.tintColor = [UIColor colorWithWhite:0.0 alpha:1.0];

}
@end

и у меня есть класс B, который у меня следующий:

@implementation UIToolbar (B)
- (void)drawRect:(CGRect)rect {

    UIColor *color = [UIColor colorWithWhite:10.0 alpha:1.0];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
    CGContextFillRect(context, rect);
    self.tintColor = [UIColor colorWithWhite:0.0 alpha:1.0];

}
@end

Вопрос в том, почему каждый раз вызывается только категория верхнего уровня? Я в основном хочу иметь разные цвета / конфигурации UIToolbar для каждого отдельного UIViewController, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

A и B - это не классы, а категории.Любой данный класс может иметь только одну реализацию данного метода за раз.Если вы попытаетесь переопределить метод в более чем одной категории, то реализация, которую вы получите, не определена.Действительно, вообще не рекомендуется переопределять методы в категориях - если вам нужно переопределить, вы должны создать подкласс.

0 голосов
/ 07 марта 2012

Когда вы используете эту реализацию, это все uitoolbar, которые настраиваются с темой. Если ваше приложение разработано под ios5, вы можете использовать метод setBackgroundImage:forToolbarPosition:barMetrics:.

Если вы разрабатываете под ios <5, вы можете реализовать новый класс, унаследованный от uitoolbar, который имеет собственный drawRect. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...