Удалить фоновое изображение из панели навигации при нажатии TableViewControllers - PullRequest
1 голос
/ 31 марта 2011

У меня есть приложение на основе навигации, в которое я помещаю TableViewControllers в стек.Я хотел бы добавить фоновое изображение для первых TableViewControllers.Не цвет, а изображение.

Я добавил категорию для установки и удаления фонового изображения.

@implementation UINavigationBar (UINavigationBarCategory) 

-(void)setBackgroundImage:(UIImage*)image withTag:(NSInteger)bgTag {
    if(image == NULL){ //might be called with NULL argument
        return;
    }
    UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:image];
    aTabBarBackground.frame = CGRectMake(self.frame.size.width/2-51,0,102,44);
    aTabBarBackground.tag = bgTag;
    [self addSubview:aTabBarBackground];
    [self sendSubviewToBack:aTabBarBackground];
    [aTabBarBackground release];
}

- (void) clearBackgroundImage {
    NSArray *subviews = [self subviews];
    for (int i = [subviews count] - 1; i >= 0; i--) {
        if ([[subviews objectAtIndex:i] isMemberOfClass:[UIImageView class]]) {
            [[subviews objectAtIndex:i] removeFromSuperview];
        }
    }    
}

И устанавливаю изображение со следующим кодом:

[[navigationController navigationBar] setBackgroundImage:[UIImage imageNamed:@"AppTop-Banner.png"]];

Фоновое изображениедобавляется должным образом, но для последующих выдвинутых в представление Tableviewcontrollers я не могу удалить изображение, вызвав следующее:

@implementation SecondTableViewController

-(id) init {
    self = [super init];
    if (self != nil) {
        self.title = @"Categories";
    }
}

- (void)viewDidAppear:(BOOL)animated { 
        [super viewDidAppear:animated];  
        [self.navigationController.navigationBar clearBackgroundImage];
}  

В этом случае «clearBackgroundImage» никогда не вызывается, а фоновое изображение остаетсятам с заголовком, перекрывающим изображение.Я не уверен, что могу ли я ссылаться на панель навигации таким образом.Возможно, self.navigationController.navigationBar - это неправильный способ вызова соответствующей навигационной панели. Может кто-нибудь пролить свет, пожалуйста.

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