31

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

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

我用:

myButton.titleLabel.text = @"Play";

myButton.titleLabel.text = @"Pause";

它不工作。文本没有变化。我也尝试过 [myButton.titleLabel setText:@"Pause"] 并且效果不佳。

我该如何设置?

4

4 回答 4

69

它应该是:

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

你也需要通过state。你可以在这里state查看其他的。

然后,您可以执行以下操作:

[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Stop" forState:UIControlStateSelected];
于 2012-06-21T09:46:08.647 回答
9

斯威夫特 4

myButton.setTitle("Pause", for: .normal)
于 2018-04-30T09:56:38.743 回答
2

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

[myButton setAttributedTitle: nil     forState: 0xffff];
[myButton           setTitle: @"Play" forState: UIControlStateNormal];
于 2014-04-09T17:18:52.773 回答
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];
    }
}
于 2014-03-30T14:05:48.413 回答