我在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];
}
答案 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创建按钮,请将背景图像设置为默认状态配置和选定状态配置。