按下按钮时更改标签

时间:2021-08-13 20:14:55

I have a button which changes images which it has been pressed, it goes from img1 to img2. I now also want the text to be changed when that certain button been pressed. So it starts on "hello", and then when pressed it turns to "goodbye" for example.

我有一个按钮,可以更改已按下的图像,从img1到img2。我现在也希望在按下某个按钮时更改文本。所以它从“你好”开始,然后当按下时它转向“再见”。

this is my code at the moment:

这是我目前的代码:

- (void)toggleImage:(UIButton *)btn1 {
    self.btn1ImageName = ([self.btn1ImageName isEqualToString:@"greypad.png"]) ? @"greenpad.png" : @"greypad.png";
    [btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
}

ViewDidLoad:

[self addLabel];
self.btn1ImageName = @"greypad.png";
btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
[btn1 setFrame:CGRectMake(46, 67, 48, 48)];
[btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(toggleImage:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];

The label?

 -(void)addLabel{
        UILabel *aLabel = [[UILabel alloc]initWithFrame: CGRectMake(20, 200, 280, 80)];
        aLabel.numberOfLines = 0;
        aLabel.textColor = [UIColor blueColor];
        aLabel.backgroundColor = [UIColor clearColor];
        aLabel.text = @"hello";
        [self.view addSubview:aLabel];
 }

3 个解决方案

#1


3  

Try this

- (void)toggleImage:(UIButton *)btn1 {
   self.btn1ImageName = ([self.btn1ImageName isEqualToString:@"greypad.png"]) ? @"greenpad.png" : @"greypad.png";
   self.titleStr = ([self.titleStr isEqualToString:@"hello"]) ? @"goodbye" : @"hello";
   [btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
   [btn1 setTitle:self.titleStr forState:UIControlStateNormal];
}

#2


2  

I would recommend a different approach:

我会推荐一种不同的方法:

When you set up your button, set different title and image for different states

设置按钮时,请为不同的状态设置不同的标题和图像

[btn1 setTitle:@"hello" forState: UIControlStateNormal];
[btn1 setTitle:@"goodbye" forState: UIControlStateSelected];
[btn1 setImage:[UIImage imageNamed:@"greypad.png"] forState:UIControlStateNormal];
[btn1 setImage:[UIImage imageNamed:@"greenpad.png"] forState:UIControlStateSelected];

And in your toggle method simply do

在你的切换方法中,只需做

- (void)toggleImage:(UIButton *)button 
{
    button.selected = !button.selected;
}

#3


1  

Add this to your toggleImage Method:

将其添加到您的toggleImage方法:

[bt1 setTitle:@"goodbye" forState: UIControlStateNormal];

#1


3  

Try this

- (void)toggleImage:(UIButton *)btn1 {
   self.btn1ImageName = ([self.btn1ImageName isEqualToString:@"greypad.png"]) ? @"greenpad.png" : @"greypad.png";
   self.titleStr = ([self.titleStr isEqualToString:@"hello"]) ? @"goodbye" : @"hello";
   [btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
   [btn1 setTitle:self.titleStr forState:UIControlStateNormal];
}

#2


2  

I would recommend a different approach:

我会推荐一种不同的方法:

When you set up your button, set different title and image for different states

设置按钮时,请为不同的状态设置不同的标题和图像

[btn1 setTitle:@"hello" forState: UIControlStateNormal];
[btn1 setTitle:@"goodbye" forState: UIControlStateSelected];
[btn1 setImage:[UIImage imageNamed:@"greypad.png"] forState:UIControlStateNormal];
[btn1 setImage:[UIImage imageNamed:@"greenpad.png"] forState:UIControlStateSelected];

And in your toggle method simply do

在你的切换方法中,只需做

- (void)toggleImage:(UIButton *)button 
{
    button.selected = !button.selected;
}

#3


1  

Add this to your toggleImage Method:

将其添加到您的toggleImage方法:

[bt1 setTitle:@"goodbye" forState: UIControlStateNormal];