我有以下UIBarButton项目:
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 45.0f, 30.0f)];
[backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchDown];
backButton.titleLabel.text = @"Back";
backButton.titleLabel.font = [UIFont fontWithName:@"texgyreadventor-regular.otf" size:20.0f];
backButton.titleLabel.textColor = [UIColor whiteColor];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
_backItem = backItem;
在其他一些方法中,我将其设置在导航栏上,如下所示:
[self.navigationItem setLeftBarButtonItem:_backItem];
到目前为止,一切都按预期工作。但是在我将它添加到顶部的导航栏之前,我想改变它的文本。这是我尝试过的事情之一:
self.navigationItem.leftBarButtonItem.title = @"NEW TITLE";
然而,这不起作用。如何在运行时动态添加标题?
答案 0 :(得分:6)
您可以使用以下方式再次访问该按钮:
UIView* view = self.navigationItem.leftBarButtonItem.customView;
UIButton* button = (UIButton*)view;
[button setTitle: @"NEW TITLE" forState: UIControlStateNormal];
你是否正在开始iOS Nayefc,我发现你最近几天有很多问题:)
答案 1 :(得分:2)
对于任何寻找的人(就像我现在一样),在较新版本的iOS中,接受的答案不再有效。它已成为barButton.title,它是一个读写String?
(在Swift中)或NSString
(在Obj-C中)。
答案 2 :(得分:-3)
而不是
self.navigationItem.leftBarButtonItem.title = @"NEW TITLE";
使用
UIButton *backButton = (UIButton *)self.navigationItem.leftBarButtonItem.customView;
backButton.titleLabel.text = @"changed";
<强>更新强>: 如果要在导航栏上添加标题之前更改标题,请执行以下操作
UIButton *backButton = (UIButton *)_backItem.customView;
backButton.titleLabel.text = @"changed";
答案 3 :(得分:-5)
以下是修复:
[button setTitle:@"Back" forState:UIControlStateNormal];
必须定义国家。