iphone - пользовательское изменение изображения на uinavigationbar по мере того, как новый контроллер представления выталкивается из стека - PullRequest
0 голосов
/ 08 февраля 2011

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

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

Полагаю, что можно также использовать метод Swizzling, но из всего, что я прочитал, это не очень хороший подход, поскольку изменения UIKit повредят мой код.Проблема, с которой я столкнулся, заключается в изменении фонового изображения, когда новые контроллеры представления выталкиваются из стека.Кажется, я могу изменить изображение, когда они выдвигаются, но когда я открываю контроллер представления, я не могу изменить изображение обратно.Можно ли как-то прослушать, когда пользователь нажимает кнопку назад на навигационном контроллере и инициирует изменение изображения в этой точке?Также любопытно, не одобряет ли Apple подобную практику.

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Вы можете попробовать использовать этот метод для программной установки фонового изображения. Ссылка на Apple Docs

willShowViewController:animated
0 голосов
/ 08 февраля 2011

вы можете попробовать вот так

создать глобальную постоянную переменную.

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image =nil;
if(CONSTANT==1)
    image= [UIImage imageNamed: @"NavigationBar.png"];
else
    image= [UIImage imageNamed: @"newbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

в UIViewController

-(void)viewWillAppear:(BOOL)animated{
   CONSTANT=2;//CONSTANT=1
   [self.navigationController.navigationbar setNeedsDisplay];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...