在iOS中的viewDidAppear中更改NavigationItem标题

时间:2017-04-04 12:45:17

标签: ios objective-c

我已在“界面”构建器中设置NavigationItem.title以提高可读性,但在我需要的代码中

self.navigationItem.title = SomeThingThatComesFromDB

我已尝试在viewDidLoadviewDidAppear中执行此操作,但在第一个应用程序中启动标题仍然是我在界面构建器中设置的内容。

我如何解决这个问题?

这是我的应用程序启动的根视图控制器,这是我正在使用的代码:

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    for (Branch *b in [UserManager sharedInstance].branches) {
        if ([b.branchId isEqualToString: [UserManager sharedInstance].vendorId]) {
            self.title = b.branchName;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您已经进行了以下比较,以设置/更新导航项目的标题。

if ([b.branchId isEqualToString: [UserManager sharedInstance].vendorId]) {
    self.title = b.branchName;
}

当您调用函数更新导航项的标题时,问题似乎是(em)[UserManager sharedInstance] .vendorId] 变量尚未设置。正如你能够正确设置它,在视图消失后再次出现。

以下代码再次说明了如何设置导航项目的标题,正如您所做的那样:

如果您想更新所有相关导航元素的标题(UITabbarController标签,UINavigationController后退按钮等),只需使用:

self.navigationItem.title = SomeThingThatComesFromDB

https://developer.apple.com/reference/uikit/uiviewcontroller/1621364-title

如果您的UINavigationController栏中有专门的导航项,您可以通过以下方式访问它(确保只有一个可以访问)

self.navigationItem.rightBarButtonItem.title = SomeThingThatComesFromDB
self.navigationItem.leftBarButtonItem.title = SomeThingThatComesFromDB

答案 1 :(得分:0)

尝试以下代码:

CGRect rect = self.navigationController.navigationBar.frame;

UIView *myView = [[UIView alloc] init];
UILabel *title = [[UILabel alloc] init];
[title setFont:[UIFont systemFontOfSize:18.0]];
title.text = *SomeThingThatComesFromDB*;
title.textColor = [UIColor whiteColor];

CGSize size = [title.text sizeWithAttributes:
               @{NSFontAttributeName:
                     title.font}];

title.frame = CGRectMake(20, 0, size.width, rect.size.height);//40
myView.frame =  CGRectMake(0, 0, 40+size.width, rect.size.height);

[myView addSubview:title];
self.navigationItem.titleView = myView;