2013-06-27 3 views
2

Я добавляю изображение на панели навигации работает нормально, но когда я хочу, чтобы добавить заголовокназвание Установка для UINavigation бара в Iphone

[email protected]"Activity"; 

это ничего

не показать, используя другой способ я добавить название метки Кроме того, но это отлично работает для одного контроллера представления, а на втором контроллере я изменить название, но он также показывает prevoius название

вот мой код

UIImage *image = [UIImage imageNamed:@"Nav.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 




[self.navigationController.navigationBar addSubview:imageView]; 


    titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(50,2,250,36)]; 
    [email protected]"Activity"; 
titleLabel.textColor=[UIColor whiteColor]; 
titleLabel.backgroundColor=[UIColor clearColor]; 
titleLabel.font=[UIFont fontWithName:@"Helvetica-Bold" size :18]; 



//titleLabel boldSystemFontOfSize:14.0; 
[self.navigationController.navigationBar addSubview:titleLabel]; 

ответ

2

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

UINavigationBar *navBar = [[self navigationController] navigationBar]; 
UIImage *backgroundImage = [UIImage imageNamed:@"Nav.png"]; 
[navBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; 

, а затем установить название как сильфона ...

[email protected]"Activity"; 

UPDATE

if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) 
    { 
     [navBar setBackgroundImage:[UIImage imageNamed:@"Nav.png"] forBarMetrics:UIBarMetricsDefault]; 
    } 
    else 
    { 
     UIImageView *imageView = (UIImageView *)[navBar viewWithTag:1];//any tag 
     if (imageView == nil) 
     { 
      imageView = [[UIImageView alloc] initWithImage: 
         [UIImage imageNamed:@"Nav.png"]]; 
      [navBar insertSubview:imageView atIndex:0]; 
      [imageView release]; 
     } 
    } 
    [email protected]"Activity"; 
+0

это дает ошибку для UIBarMetricsDefault –

+0

какая ошибка вы получаете ?? –

+0

@JawAli используйте обновленный код сейчас ... –

0

Если вы хотите по-другому добавить добавление subview в панель навигации, то в методе viewWillDisAppear вы должны указать заголовок скрытым и на viewWillAppear метод set hidden false.i столкнулся с такой же проблемой, как ваша.

поэтому всякий раз, когда вы покидаете свой текущий вид viewWillDisAppear, метод вызывается, и он скроет заголовок текущего вида и, как вы снова в том же представлении, тогда метод viewWillAppear снова отобразит заголовок.

+0

ok Спасибо, позвольте мне попробовать –

0

Вы можете просто скрыть панель навигации по умолчанию. и добавить следующий код -

NavigationView = [[UIView alloc]init]; 
NavigationView.frame = CGRectMake(0, 0 , 320, 44); 

UIImageView *TopBarImg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)]; 
TopBarImg.image = [UIImage imageNamed:@"Nav.png"]; 
[NavigationView addSubview:TopBarImg]; 

TopBarImg.userInteractionEnabled = TRUE; 

UILabel *TopTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 44)]; 
TopTitle.backgroundColor = [UIColor clearColor]; 
TopTitle.textAlignment = UITextAlignmentCenter; 
TopTitle.text = @"Activity"; 
TopTitle.textColor=[UIColor whiteColor]; 
TopTitle.backgroundColor=[UIColor clearColor]; 
TopTitle.font=[UIFont fontWithName:@"Helvetica-Bold" size :18]; 
[TopBarImg addSubview:TopTitle]; 

UIButton *BackButton=[UIButton buttonWithType:UIButtonTypeCustom]; 
BackButton.Frame = CGRectMake(5, 8, 46, 30); 
[BackButton setBackgroundImage:[UIImage imageNamed:@"back_btn.png"] forState:UIControlStateNormal]; 
[BackButton setBackgroundImage:[UIImage imageNamed:@"back_btn_selected.png"] forState:UIControlStateHighlighted]; 
[BackButton addTarget:self action:@selector(BackClicked) forControlEvents:UIControlEventTouchUpInside]; 
[TopBarImg addSubview:BackButton]; 


[self.view addSubview:NavigationView]; 

И добавить один метод обратно кнопки действий мыши следующим образом -

- (Недействительными) BackClicked { [self.navigationController popViewControllerAnimated: YES]; }