2013-02-11 2 views
1

Я установил пользовательскую панель навигации в своем appdelegate. Вы можете увидеть код здесь.изменить навигационную панель только на один вид

UIImage *image = [UIImage imageNamed:@"navbar.png"]; 
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 

Но теперь я работаю с инфраструктурой eventkit. Я хочу, когда я перехожу на eventdetails, я получаю стандартную навигационную макет. Без изображения.

EKEventViewController *vc = [[EKEventViewController alloc] init]; 
[vc.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
vc.event = [dataSource eventAtIndexPath:indexPath]; 
vc.allowsEditing = YES; 
[calendar.navigationController pushViewController:vc animated:YES]; 

Я пробовал следующее, но он не работает. Любая помощь?

+0

Пробовали ли вы положить [vc.navigationController.navigationBar setBackgroundImage: ноль forBarMetrics: UIBarMetricsDefault] команды в viewWillAppear самого класса EKEventViewController? – cleverbit

+0

У вас нет доступа к этому классу? Это класс внутри рамки eventKit – Steaphann

+0

Как он не работает? Не меняется ли изображение? – rdelmar

ответ

1

вы можете сделать одно, сделать снимок экрана одного viewController с навигационной панелью по умолчанию, просто обрезать только область навигационной панели, то есть сделать изображение размером 320 x 44.

когда вы хотите снова вашей навигационной панели по умолчанию, это время использовать это обрезанное изображение в качестве фона навигационной панели, добавьте следующий код

UIImage *image = [UIImage imageNamed:@"defaultNavbar.png"]; 
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 

снова при переходе к другому ViewController, имеющий пользовательские Navimage затем снова рисовать нав изображение с помощью помощью пользовательского кода изображения, т.е.

UIImage *image = [UIImage imageNamed:@"navbar.png"]; 
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];