UIButton 标题更改为默认值
Posted
技术标签:
【中文标题】UIButton 标题更改为默认值【英文标题】:UIButton title changes to default 【发布时间】:2012-07-20 16:26:41 【问题描述】:我觉得这可能是一个愚蠢的问题......但无论如何我有这种奇怪的UIButton
标题行为。
按钮已设置并连接到 IB 中的动作和属性(动作为startButtonPushed
,属性为startButton
)。在视图控制器内部,我的操作设置如下:
bool buttonStateStop;
- (IBAction)startPushed:(id)sender
if (buttonStateStop)
[appD.locationManager stopSavingLocations];
startButton.titleLabel.text = @"Start";
buttonStateStop = NO;
else
[appD.locationManager startSavingLocations];
startButton.titleLabel.text = @"Stop";
buttonStateStop = YES;
最初我将 IB 中的默认标题设置为“开始”,但每当我按下按钮时,它会在几分之一秒内变为“停止”,然后返回。我花了一段时间试图弄清楚为什么标题总是回到“开始”。最终,我将 IB 标题更改为“xxxxxx”,并意识到无论如何,按钮标题更改后,IB 标题都会立即重新声明。
所以问题是:为什么 IB 不断将按钮的标题改回默认值?我以前从未遇到过这种行为。并且(显然)我该如何解决?
额外信息:对按钮的唯一引用是@property
、@synthesize
,以及上面代码中的语句。视图位于导航控制器内部。
【问题讨论】:
【参考方案1】:您需要使用setTitle:forState:
方法而不是设置titleLabel.text
属性:
[startButton setTitle:@"Start" forState:UIControlStateNormal];
// Normal and highlighted titles do not need to be the same
[startButton setTitle:@"Start!" forState:UIControlStateHighlighted];
现在发生的情况是,您在标签中设置了代表当前状态视图的标题,但是一旦状态从 push 变为 normal,按钮会将标签重置为新状态的标题(即您在 IB 中设置的文本)。
【讨论】:
你说得对,这是我的问题。非常奇怪的行为,因为我以前做过完全相同的事情而没有遇到任何麻烦。 奇怪的是,它“有时会起作用!”问题是他们在文档中提到您使用.titleLabel 更改文本的样式(等)。真麻烦!【参考方案2】:这个的快速版本是
startButton.setTitle("Start", forState: UIControlState.Normal)
【讨论】:
现在startButton.setTitle("Start", for: .normal)
直到他们再次更改它以上是关于UIButton 标题更改为默认值的主要内容,如果未能解决你的问题,请参考以下文章