Фон панели навигации скрывает правую кнопку и не может удалить ее при следующих просмотрах - PullRequest
0 голосов
/ 30 сентября 2011

Я использую категорию ниже, чтобы программно изменить фон панели навигации в моем приложении.Он работает нормально, но я не вижу нужную кнопку, которую я добавил в навигационную панель.Кнопка кажется скрытой, так как нажатие на правую навигационную панель по-прежнему вызывает действие, связанное с правой кнопкой навигационной панели.Кроме того, как я могу удалить фон навигации, который был добавлен с помощью данного метода категории?

UINavigationBar + CustomImage.h

#import <Foundation/Foundation.h>

@interface UINavigationBar (CustomImage)
  - (void)setBackgroundImage:(UIImage *)image;
  - (void)clearBackgroundImage;

UINavigationBar + CustomImage.m

#import "UINavigationBar+CustomImage.h"

@implementation UINavigationBar (CustomImage)
{
  if(image==nil) return;

  UIImageView *image_view = [[UIImageView alloc] initWithImage:image];
  image_view.frame = CGRectMake(0,0,320,44);
  [self addSubview:image_view];
}

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

}

И на мой взглядКонтроллер называется так:

[[self.navigationController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:[UIImage imageNamed:@"header-background.png"]];

Спасибо за помощь,

Стефан

1 Ответ

1 голос
/ 30 сентября 2011

попробуйте отправить ваше представление назад:

[self sendSubviewToBack:image_view];

, поместив его в определенный z-индекс:

[self insertSubview:image_view atIndex:0];

или ниже другого представления:

[self insertSubview:image_view belowSubview:anotherSubview];

или выше другого вида:

[self insertSubview:image_view aboveSubview:anotherSubview];
...