如何确定哪个控件触发了事件?

时间:2010-04-10 02:44:22

标签: iphone objective-c cocoa

我有两个UISliders(两个都有引用插座)的Value Changed事件连接到以下方法:

-(IBAction) sliderMoved:(id) sender {}

如何确定移动了哪个滑块以便我可以获取其值并更新相应的标签?或者有两个单独的事件,每个滑块一个更简单?第二个选项似乎是对我不必要的复制。

干杯, 丹

2 个答案:

答案 0 :(得分:4)

它将是sender变量。只需用它完成所有工作。

顺便说一句,强烈输入它是合法的。因此,如果您知道自己只处理UISlider对象,则可以执行-(IBAction)someAction:(UISlider*)slider {}

答案 1 :(得分:1)

如果设置了滑块,可以使用[sender tag]获取滑块的标签。在创建滑块时或在界面构建器中分配标记。

-(IBAction) sliderMoved:(UISlider*)sender {
switch ( [sender tag] ) {
case kMyOneSlider: ... break;
case kMyOtherSlider: ... break;
}
}

您可以对每个滑块使用==和插座成员:

-(IBAction) sliderMoved:(UISlider*)sender {
if ( sender == mOneSlider ) ...;
if ( sender == mOtherSlider ) ...;
}

或者您可以为每个滑块设置不同的操作。如果处理程序中有一些公共代码,我通常会共享一个操作方法。