在点击UIButton时切换它的标题

时间:2016-11-06 17:57:53

标签: ios objective-c cocoa-touch uibutton

点击时,我想要一个UIButton将其标题更改为“重新启动”,再次点击时将其标题更改为“停止”。这段代码我将Button标题更改为“Restart”,但是当我再次点击按钮时没有任何反应。

-(IBAction)restartPressed{
    if (self.restart){
      [self.restart setTitle:"@Restart" forState:UIControlStateNormal];
    else {
      [self.restart setTitle:"@Stop" forState:UIControlStateSelected];
    }
  }

4 个答案:

答案 0 :(得分:4)

您需要将UIControlStateNormal的状态设置为两次。 UIControlStateSelected是一个州,大麦是可见的。

声明一个变量,每次按下按钮时更新的内容。

@property (nonatomic, assign) BOOL isRestart;

设置正确状态的标题,观察上述声明的值。

 - (IBAction) restartPressed {
    self.isRestart = !self.isRestart;
    if (self.isRestart){
      [self.restart setTitle:@"Restart" forState:UIControlStateNormal];
    } else {
      [self.restart setTitle:@"Stop" forState:UIControlStateNormal];
   }
}

另外,请确保调用restartPressed函数。

答案 1 :(得分:3)

您可以采用全局布尔变量:

var isButtonClicked = false

@IBAction func restartClicked(_ sender: AnyObject) {

    isButtonClicked = !isButtonClicked
    restartButton.setTitle(isButtonClicked ? "Stop" : "Restart", for: .normal)
}

代码很快。您可以将其转换为目标C

答案 2 :(得分:0)

全局声明int i和int rem:

@interface ViewController ()
{
    int i;
    int rem;
}

然后在你的重启按钮Action中添加以下代码:

- (IBAction)restartPressed:(id)sender

{
    if((rem = i % 2 == 0))
    {
        [_restartBtn setTitle:@"restart"  forState:UIControlStateNormal];
        i=i+1;
    }
    else
    {
        [_restartBtn setTitle:@"stop"  forState:UIControlStateNormal];
        i=i+1;
    }

}

希望这有帮助!

答案 3 :(得分:0)

试试这个:

在ViewDidLoad

[btn setTitle:@"Restart" forState:UIControlStateSelected];
[btn setTitle:@"Stop" forState:UIControlStateNormal];


- (IBAction) restartPressed:(UIButton *)btn {
    btn.selected = !btn.isSelected;
}