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

31

我有一个UIButton按钮,应该有两种状态 - "播放"和"暂停"。例如,在用户首次查看它时,它将显示"播放",然后每当用户单击它时,它都应该在"播放"和"暂停"之间切换。

我已经成功创建了控制器本身 - 内容可以正常播放和暂停 - 但似乎无法更改UIButton的文本标签文本。

我使用:

myButton.titleLabel.text = @"Play";

myButton.titleLabel.text = @"Pause";

它没起作用。文本没有改变。我还尝试了 [myButton.titleLabel setText:@"Pause"],但也没有起作用。

我应该怎么设置它?

4个回答

69
应该是这样的:
[myButton setTitle:@"Play" forState: UIControlStateNormal];

你还需要传递state。你可以在这里检查其他state链接
然后你可以这样做:
[myButton setTitle:@"Play" forState: UIControlStateNormal];
[myButton setTitle:@"Stop" forState: UIControlStateSelected];

9

SWIFT 4

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

2

我发现这篇文章有些过时,因为添加了属性字符串。显然,在storyboard中分配的按钮标题是属性字符串。属性标题优先于NSString标题,因此如果您想使用简单字符串作为标题,则必须首先删除属性标题。虽然下面是我的做法,但可能有更好的方法。当然,您也可以将新标题设置为属性字符串。

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

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];
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接