代码之家  ›  专栏  ›  技术社区  ›  Daniel Situnayake

如何确定触发事件的控件?

  •  0
  • Daniel Situnayake  · 技术社区  · 16 年前

    我将两个uislider(都有引用出口)的值更改事件连接到以下方法:

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

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

    干杯, 丹

    2 回复  |  直到 16 年前
        1
  •  1
  •   drawnonward    16 年前

    如果设置了滑块的标记,则可以使用[sender tag]获取该标记。创建滑块或在Interface Builder中指定标记。

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

    对于每个滑块的出口构件,可以使用==:

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

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

        2
  •  4
  •   zneak    16 年前

    它将是 sender 变量。把你所有的工作都做好。

    顺便说一下,强打是合法的。所以如果你知道你只需要处理uislider对象,你可以这样做。 -(IBAction)someAction:(UISlider*)slider {} .