UIButton标题更改为默认值

我觉得这可能是一个愚蠢的问题…但无论如何,我有这种奇怪的UIButton标题行为。

该button被设置并连接到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的默认标题设置为“开始”,但每当我按下button,它会变成“停止”一小会儿,然后回来。 我花了一段时间试图找出为什么标题不断回到“开始”。 最后我把IB标题改成了“xxxxxx”,并且意识到无论如何,IB标题在button标题改变之后立即重新确立。

所以问题是:为什么IB不断地把button的标题改回默认? 我从来没有遇到过这种行为。 而且(显然)我怎样才能解决它?

额外的信息:对button的唯一引用是@property @synthesize@property @synthesize和上面代码中的语句。 该视图位于导航控制器内部。

您需要使用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]; 

现在发生的事情是你在代表当前状态视图的标签中设置了标题,但是一旦状态从按下变为正常,button将标签重置为新状态的标题(这是你在IB中设置)。

这是一个迅速的版本

 startButton.setTitle("Start", forState: UIControlState.Normal)