【问题标题】:Changing navigationController title after viewdidload在 viewdidload 之后更改 navigationController 标题
【发布时间】:2014-09-30 16:07:51
【问题描述】:

当我在viewdidload 中设置self.navigationItem.title 时,标题正确显示,稍后根据用户交互我正在更新标题。标题长度固定为在viewdidload 中设置的标题长度。

这是我的代码中想要发生的事情

- (void)viewDidLoad 
{
     [super viewDidLoad];
     [self.navigationController.navigationBar setTitleTextAttributes:@{
                                                                  [UIColor brownColor]: NSForegroundColorAttributeName,
                                                                  [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0]: NSFontAttributeName}];
     self.navigationItem.title = @"My Account";
}


- (void)updateTitleWithUserName {
     self.navigationItem.title = @"Test User 167";
}

结果:

测试...

有什么建议可以解决这个问题吗?

【问题讨论】:

  • self.title = @"Your_Title" 足以设置导航标题。
  • @Suhail:不,如果你有标签栏,这不是一个好主意,那么它会产生一些问题,比如两个地方的标题都被替换了(标签栏索引标题和导航栏标题。)
  • 什么时候调用updateTitle方法?
  • 当用户点击按钮时。

标签: ios ios7 uinavigationcontroller uinavigationbar


【解决方案1】:

尝试为标题使用标签,这样您就可以在 viewDidLoad 上调整其大小以适应这样的大小,然后只需在更新时更改 tlabel 并将其分配给导航标题。 (根据需要管理颜色和字体)

    self.title = @"Your TiTle Text";
    UILabel* tlabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 200, 40)];
    tlabel.text=self.navigationItem.title;
    tlabel.textColor=[UIColor whiteColor];
    tlabel.font = [UIFont fontWithName:@"Helvetica-Bold" size: 30.0];
    tlabel.backgroundColor =[UIColor clearColor];
    tlabel.adjustsFontSizeToFitWidth=YES;
    self.navigationItem.titleView=tlabel;

【讨论】:

  • 如果文本太长,标题会隐藏在返回按钮下方。
  • 嗯,应该是标题而不是全文
【解决方案2】:

试试这个

- (void)viewDidLoad 
{
    titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 200, 40)];// create instance variable UILabel * titleLabel;
    titleLabel.text=@"My Account";
    titleLabel.textColor=[UIColor blackColor];
    titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size: 16.0];
    titleLabel.backgroundColor =[UIColor clearColor];
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.adjustsFontSizeToFitWidth=YES;
    self.navigationItem.titleView= titleLabel;
}
- (void)updateTitleWithUserName 
{
     titleLabel.text = @"Test User 167";
}

【讨论】:

  • 如果文本太长,标题会隐藏在返回按钮下方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多