2012-02-22 4 views
2

Я сейчас разрабатываю приложение, которое поддерживает как iOS 4.3, так и 5.0.Проблема с навигационной панелью iphone 4.3

Мой код отлично работает с 5.0, но приводит к сложной ошибке в 4.3.

Издание является:

У меня есть вид с Tableview в нем. В этом представлении есть панель навигации с левыми и правыми элементами навигационной панели. Как только я выберу строку в виде таблицы (и достигнет ее соответствующего представления) и вернется назад, элементы левой и правой навигационной панели «исчезнут».

Я был над этим беспорядком в течение последних нескольких часов, кто-то получил лекарство?

Это то, что я уже сделал:

Это вспомогательный метод, который я называю, когда вид нагрузки.

+ (void)setNavigationBarContents:(UIViewController *)view 
{ 


UIImage *topBarimage=[UIImage imageNamed:NAVIGATION_BAR_IMAGE]; 


if([view.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 

    [view.navigationController.navigationBar setBackgroundImage:topBarimage forBarMetrics:UIBarMetricsDefault]; 
} 
else 
{ 
    [view.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:topBarimage] aboveSubview:view.navigationController.navigationBar]; 

} 

UIImage *logo=[UIImage imageNamed:LOGO]; 
UIImageView *logoView=[[UIImageView alloc]initWithImage:logo]; 
view.navigationItem.titleView = logoView; 

UIImage *settingsButtonImage= [UIImage imageNamed:NAVIGATION_SETTINGS]; 
UIButton *rightBarButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
[rightBarButton setBackgroundImage: settingsButtonImage forState:UIControlStateNormal]; 
[rightBarButton addTarget: view action:@selector(settingsButton:) forControlEvents:UIControlEventTouchUpInside]; 
rightBarButton.frame = CGRectMake(0, 0, 50, 40); 
view.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: rightBarButton]; 

UIImage *logoutButtonImage= [UIImage imageNamed:LOGOUT]; 
UIButton *leftBarButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
[leftBarButton setBackgroundImage: logoutButtonImage forState:UIControlStateNormal]; 
[leftBarButton addTarget: view action:@selector(logout:) forControlEvents:UIControlEventTouchUpInside]; 
leftBarButton.frame = CGRectMake(0, 0, 65, 32); 
view.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: leftBarButton]; 


} 

Пытались называют это как в viewDidLoad и viewWillAppear, но тщетно.

Так я называю это в viewController.

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 

//other setups here. 

[Utility setNavigationBarContents:self]; 

} 
+0

Попробуйте этот код в ViewWillAppear [Utility setNavigationBarContents: автономный]; – Splendid

+0

Я уже пробовал это, как я сказал ранее. Спасибо за ваш быстрый ответ – Guru

+0

Только элемент кнопки на панели исчезает или панель навигации исчезает? – Splendid

ответ

3

Я получил решение, добавив Этот код в моем appDelegate.m

// added so that navigation bar background image works in version lower than 5.0 

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
UIImage *img = [UIImage imageNamed:NAVIGATION_BAR_IMAGE]; 
[img drawInRect:rect]; 
} 
@end 
Смежные вопросы