Пользовательский фон панели навигации не восстанавливается при отображении всплывающих окон - PullRequest
1 голос
/ 30 ноября 2011

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

Это работает нормально, однако, когда я нажимаю кнопку «Назад» и возвращаюсь к исходному виду, фоновое изображение панели инструментов навигации не изменяется обратно.

Вот соответствующий код:

На моем первом контроллере вида:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //set to change the navigation toolbar to this background image (the first) when this view loads
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"QuickGrocery Logo Updated.jpg"] forBarMetrics:UIBarMetricsDefault];
}

Действие кнопки:

    - (IBAction)wellBalancedMealsClicked:(id)sender {

    QuickGroceryMasterViewController *masterViewController = [[QuickGroceryMasterViewController alloc] initWithNibName:@"QuickGroceryMasterViewController" bundle:nil];

    [masterViewController setRecipeChoice:1];

//changes the navigation toolbar background image
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Keep It Balanced.jpg"] forBarMetrics:UIBarMetricsDefault];
}

1 Ответ

2 голосов
/ 30 ноября 2011

Есть только одно изображение для панели навигации. Если вы измените его, а потом захотите, чтобы он снова изменился, вам придется изменить его обратно самостоятельно.

Я бы посоветовал вам предоставить каждому из ваших контроллеров представления свойство navigationBarImage. Установите делегата для вашего контроллера навигации. В делегате добавьте этот метод:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    UIImage *image = [(id)viewController navigationBarImage];
    if (image)
        [navigationController.navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
}
...