iOS导航标题不显示在子页面上

时间:2012-07-02 12:01:09

标签: ios uinavigationbar title

我有一个基于导航控制器的应用程序标签,

导航栏中的标题在选项卡的根页面中显示为

但是当我按下另一个视图控制器时,我无法设置此视图的标题

这是我用于根页面和推送页面的代码,

- (void)viewDidLoad
{
    [super viewDidLoad];    
UILabel *lava = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]autorelease];
    lava.backgroundColor = [UIColor clearColor];
lava.text = @"About us"; 

lava.textAlignment = UITextAlignmentCenter ;
lava.textColor = [UIColor whiteColor];
lava.font = [UIFont fontWithName:@"DroidSans-Bold" size:(46)];
lava.shadowColor = [UIColor blackColor];
lava.shadowOffset = CGSizeMake(2, 3);
self.navigationItem.titleView = lava;

 }

那么,在导航栏上设置标题会缺少什么?

谢谢!

4 个答案:

答案 0 :(得分:1)

您应该在新控制器viewDidLoad

中更改标题

答案 1 :(得分:1)

您可以尝试self.navigationController.navigationItem.titleView

或者如果您使用iOS5或更高版本..

UIImage *img=[UIImage imageNamed:@"NavBarBackground.png"];    
[self.navigationController.navigationBar setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];

NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:
                    [UIFont boldSystemFontOfSize:18.0f],UITextAttributeFont
                    ,[UIColor whiteColor],UITextAttributeTextColor
                    ,[UIColor blackColor],UITextAttributeTextShadowColor
                    ,[NSValue valueWithUIOffset:UIOffsetMake(0, 0)],UITextAttributeTextShadowOffset
                    , nil];
[self.navigationController.navigationBar setTitleTextAttributes:dict];

在rootViewController中的viewDidLoad中调用一次,然后就可以在任何地方使用self.title=@"foo"

答案 2 :(得分:1)

CGRect applicationFrame = CGRectMake(0, 0, 300, 40);
UIView * newView = [[[UIView alloc] initWithFrame:applicationFrame] autorelease];
[newView addSubview: lava];
self.navigationItem.titleView = newView;

试试这样。我认为这会对你有所帮助。

答案 3 :(得分:1)

你用什么来推动视图控制器?

之间有区别:

[self.navigationController pushViewController:viewController animated:YES];

[self.navigationController presentModalViewController:viewController animated:YES];

所以,如果您使用的是presentModalViewController方法,它将不会显示您的标题。

如果这不是问题并且你正在使用pushViewController方法,你可以尝试设置你正在推动的视图控制器的标题。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Controller title";
}