如何在单击目标c中的按钮时更改按钮的图像

时间:2012-01-11 07:07:16

标签: objective-c uibutton

我在UI中放置了一个暂停按钮,当用户点击按钮时,暂停图像中的按钮图像必须更改为开始图像。我已经在包中放置了开始和暂停图像,我能够做到这一点,但是当我再次点击开始时,它应该显示暂停图像按钮,如何执行此操作,以下是我正在使用的代码,

-(IBAction)btnClked:(id)sender
{

    [pauseButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];



    UIButton *btn=(UIButton *)sender;


    [btn setImage:[UIImage imageNamed:@"start.png"] forState:UIControlStateNormal];
}

2 个答案:

答案 0 :(得分:1)

您需要一个变量来跟踪状态变化。 BOOL很好。

但是使用你的代码,你可以“滥用”UIButton的标签属性来判断它是在播放(标签== 1)还是暂停(标签== 0)

-(IBAction)btnClked:(id)sender {
     UIButton *btn=(UIButton *)sender;
     if (btn.tag == 1) {
         btn.tag = 0;
         [btn setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
     } else {
         btn.tag = 1;
        [btn setImage:[UIImage imageNamed:@"start.png"] forState:UIControlStateNormal];
     }
}

答案 1 :(得分:0)

您可以使用UIButton的选定状态执行相同操作。例如,在启动按钮时,您必须定义2个图像。一个用于正常状态,另一个用于选定状态。触发按钮的触摸事件时,必须将其选中。如果已经选择,则需要取消选择它。这比维护其他变量以检查按钮的选定状态要好得多。您也可以使用此方法改善性能。

代码示例

    - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIButton *startButton = [[UIButton alloc] initWithFrame:CGRectMake(200, 300, 60, 60)];
    [startButton setBackgroundImage:[UIImage imageNamed:@"start.png"] forState:UIControlStateNormal];
    [startButton setBackgroundImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected];

    [startButton addTarget:self action:@selector(modeButtonClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:startButton];
}

- (IBAction)modeButtonClick:(id)sender {
    UIButton *startButton = (UIButton *)sender;
    [startButton setSelected:![startButton isSelected]];
}

如果您是从故事板或XIB创建按钮,请将背景图像设置为默认状态配置和选定状态配置。