如何在iOS中以编程方式更改UIButton中的textLabel属性?

时间:2012-06-21 09:44:46

标签: ios uibutton label title

我有UIButton应该有2种状态 - “播放”和“暂停”;即 - 在用户第一次看到它时显示“播放”,然后每当用户点击它时,它应该在“播放”和“暂停”之间切换。

我设法创建了控制器本身 - 内容正常播放和暂停 - 但我似乎无法更改UIButton文本标签文本。

我用:

myButton.titleLabel.text = @"Play";

myButton.titleLabel.text = @"Pause";

它不起作用。文字没有改变。我也尝试了[myButton.titleLabel setText:@“Pause”]并且它也没有用。

我该如何设置?

4 个答案:

答案 0 :(得分:67)

应该是:

[myButton setTitle:@"Play" forState:UIControlStateNormal];

您也需要传递state。您可以查看其他state的{​​{3}}。

然后你可以这样做:

[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Stop" forState:UIControlStateSelected];

答案 1 :(得分:6)

SWIFT 4

myButton.setTitle("Pause", for: .normal)

答案 2 :(得分:2)

我发现这有点过时,因为添加了属性字符串。显然,故事板中分配的按钮标题属于字符串。归属标题优先于NSString标题,因此如果您想使用简单字符串作为标题,则必须先删除属性标题。我做了如下,虽然可能有更好的方法。当然,您可以将新标题也设为属性字符串。

[myButton setAttributedTitle: nil     forState: 0xffff];
[myButton           setTitle: @"Play" forState: UIControlStateNormal];

答案 3 :(得分:1)

如果您想在页面加载时加载它,并支持本地化语言:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    if (self.flagToChangeLabel){
        NSString* newBtnTitle = NSLocalizedString(@"LOCALIZED_KEY", nil);
        [self.laterButton setTitle:newBtnTitle forState:UIControlStateNormal];
        [self.laterButton setTitle:newBtnTitle forState:UIControlStateSelected];
    }
}