如何以编程方式更改UIBarButtonItem的文本?

时间:2010-04-22 14:51:53

标签: iphone objective-c

我读过这篇文章: Change the text of a UILabel (UIBarButtonItem) on a toolbar programmatically

但它似乎不适用于我的自动隐藏工具栏?
我也尝试barbuttonItem.title来设置文本,也失败了。

有什么想法吗?

6 个答案:

答案 0 :(得分:14)

您是否在Interface Builder中创建了按钮?确保标识符设置为“自定义”,否则您将无法更改标题。

UIBarButtonItem中选择Interface Builder,打开检查员(Command + Shift + I),然后在Identifier旁边的下拉列表中选择“自定义”。

答案 1 :(得分:7)

试试这个:

UIBarButtonItem *clearButton = [[UIBarButtonItem alloc] initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(yourMethod:)];

答案 2 :(得分:4)

  1. 为此示例中的IBOutlet,outToMyButton创建UIBarButtonItem
  2. .m
  3. 中合成
  4. outToMyButton.title = [NSString stringWithFormat:@"%i",myInt]; // or any NSString init

答案 3 :(得分:4)

以编程方式更改UIBarButtonItem的标题

@interface YourController : UIViewController {

    UIBarButtonItem *barButton;

}

- (void)viewDidLoad
{
barButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Set", @"Set")
                                                           style:UIBarButtonItemStylePlain
                                                            target:self
                                                            action:@selector(barButtonClicked)];
}   

BarButtonItem行动

-(void)barButtonClicked{

if ([barButton.title isEqualToString:@"Set"]) {

  //Enter Code

  barButton.title = @"Done"


 }else{
   //Enter Code
  barButton.title = @"Set"

    }

}

答案 4 :(得分:0)

我认为我的问题与你的问题相似 - 但并不完全相同:我希望附件工具栏上的文字反映最后一个选择器组件的选择。

但是,我无法更改添加到UILabel的{​​{1}}的文字,UIBarButtonIteminputAccessoryView的一部分,显示在多组件滑动UIPickerView上对于每个数据条目UITextFields。这些元素以编程方式(Xcode v 4.3(4E109))创建,文本字段除外,每个文本字段都在故事板中创建并声明为属性。

既没有将文本分配给toolbarTitle标签,也没有使用toolbarTitle作为自定义视图分配/初始化条形按钮项目:

toolbarTitle.text = @"myTextFromPickerComponent";
UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithCustomView:toolbarTitle];

//nor alloc/init-ing the bar button item directly, passing the new text to initWithTitle:

UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithTitle:toolbarTitle.text style:UIBarButtonItemStyleDone target:self action:nil];

给出了理想的行为;即标签文本没有改变,即使我向NSLog确认我确实发送了新文本。

我在Custom Views for Data InputInput Views and InputAccessory Views下的文档中得到了提示:

“第一响应者可以通过调用reloadInputViews的{​​{1}}方法重新加载输入和附件视图。”

我通过使用当前UIResponder调用UITextField来实现此功能,这对我来说可以使用上面给出的两个代码片段中的任何一个。

答案 5 :(得分:0)

问题在于以编程方式更改UIBarButtonItem的文本:

这就是您的操作方式。 例如将天气信息添加到栏中。

import UIKit
...

@IBOutlet weak var weatherBarLabel: UIBarButtonItem!


//then
func setTheWeatherInfo(weather: WeatherModel){
 weatherBarLabel.title = "\(weather.temperature)°"
}