UIButton标题更改为默认值



我觉得这可能是个愚蠢的问题。。。但无论如何,我有这种奇怪的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和上面代码中的语句。该视图位于导航控制器内部。

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

现在的情况是,您在表示当前状态视图的标签中设置标题,但一旦状态从按下变为正常,按钮就会将标签重置为新状态的标题(即您在IB中设置的文本)。

这是的swift版本

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

最新更新