UIB按钮的标题改为默认[英] UIButton title changes to default

本文是小编为大家收集整理的关于UIB按钮的标题改为默认的处理方法,想解了UIB按钮的标题改为默认的问题怎么解决?UIB按钮的标题改为默认问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我觉得这可能是一个愚蠢的问题......但无论如何我有这种奇怪的 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];

现在发生的情况是,您在标签中设置了代表当前状态视图的标题,但是一旦状态从 push 变为 normal,按钮会将标签重置为新状态的标题(即您在 IB 中设置的文本).

本文地址:https://www.itbaoku.cn/post/924673.html