1

我有以下 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";

然而,这不起作用。如何在运行时动态添加标题?

4

4 回答 4

7

您可以使用以下命令再次访问该按钮:

UIView* view = self.navigationItem.leftBarButtonItem.customView;
UIButton* button = (UIButton*)view;
[button setTitle: @"NEW TITLE" forState: UIControlStateNormal];

您是否正在启动 iOS Nayefc,我看到您最近几天有很多问题 :)

于 2012-06-15T13:26:21.757 回答
3

对于任何正在寻找的人(就像我刚才一样),在较新版本的 iOS 中,接受的答案不再有效。它变成了 barButton.title,这是一个读写String?(在 Swift 中)或NSString(在 Obj-C 中)。

于 2015-03-11T16:37:55.600 回答
-4

代替

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";
于 2012-06-14T18:12:13.300 回答
-6

这是修复:

 [button setTitle:@"Back" forState:UIControlStateNormal];

必须定义状态。

于 2012-06-18T18:16:27.757 回答