我在表单上使用多个UISliders,我只想要一种方法来跟踪滑块的变化。
现在我有一个方法:
- (IBAction) slider1ValueChanged:(UISlider *)sender {
somelabel.text = [NSString stringWithFormat:@" %.1f", [sender value]];
}
但是因为我使用多个滑块,我想使用switch语句来触发特定的滑块,所以例如如果我有2个滑块,并且它们都使用上面的ValueChanged方法,我想要类似的东西:
- (IBAction) slider1ValueChanged:(UISlider *)sender {
switch(SLIDERID)
case SLIDER1:
blabla;
break;
case SLIDER2:
update other label;
break;
case default:
break;
somelabel.text = [NSString stringWithFormat:@" %.1f", [sender value]];
}
谁能帮帮我?
提前致谢!
答案 0 :(得分:10)
您只需要将sender
参数与滑块进行比较,找出哪一个移动了:
-(IBAction) sliderValueChanged:(UISlider*)sender {
if (sender == self.temperatureSlider) {
// ...
} else if (sender == self.altitudeSlider) {
// ...
} // etc
}
然后将所有滑块连接到IB中的此操作或通过-setTarget
。
答案 1 :(得分:0)
为IB中任何UI组件的tag属性赋值,并使用如下所示的开关案例对其进行评估:
typedef enum Commands {
CMD_PLAY_MUSIC = 0,
CMD_STOP_MUSIC,
CMD_PAUSE_MUSIC,
CMD_EDIT_PLAYLIST,
CMD_ADJUST_VOLUME,
} Commands;
-(id) processUIEvent:(id) sender {
int tag = [sender tag];
switch (tag) {
case CMD_PLAY_MUSIC:
// Code here...
break;
case CMD_PAUSE_MUSIC:
// Code here...
break;
case CMD_EDIT_PLAYLIST:
// Code here...
break;
default:
// Event not handled
break;
}
}