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)