Iphone 如何确定哪个控件触发了事件?
我将两个UISlider(都有参考插座)的值更改事件连接到以下方法:Iphone 如何确定哪个控件触发了事件?,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,我将两个UISlider(都有参考插座)的值更改事件连接到以下方法: -(IBAction) sliderMoved:(id) sender {} 如何确定移动了哪个滑块,以便获取其值并更新相应的标签?或者让两个单独的事件(每个滑块一个)更简单?第二种选择对我来说似乎是不必要的复制 干杯, Dan它将成为发送方变量。用它做你所有的工作 顺便说一下,强力打字是合法的。因此,如果您知道只处理UISlider对象,那么可以执行-(iAction)someAction:(UISlider*)slide
-(IBAction) sliderMoved:(id) sender {}
如何确定移动了哪个滑块,以便获取其值并更新相应的标签?或者让两个单独的事件(每个滑块一个)更简单?第二种选择对我来说似乎是不必要的复制
干杯,
Dan它将成为
发送方
变量。用它做你所有的工作
顺便说一下,强力打字是合法的。因此,如果您知道只处理UISlider对象,那么可以执行
-(iAction)someAction:(UISlider*)slider{}
它将是发送方
变量。用它做你所有的工作
顺便说一下,强力打字是合法的。因此,如果您知道只处理UISlider对象,您可以执行
-(iAction)someAction:(UISlider*)slider{}
如果您已经设置了,您可以使用[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 ) ...;
}
也可以为每个滑块设置不同的操作。如果处理程序中有一些常见代码,我通常会共享一种操作方法。如果您已经设置了,您可以使用[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 ) ...;
}
也可以为每个滑块设置不同的操作。如果处理程序中有一些公共代码,我通常会共享一个操作方法。那太好了,我想ID是C#对象类型的等价物?不过,问题仍然存在-是否有一种令人愉快的方法可以确定触发事件的两个滑块中的哪一个?您可以使用==运算符比较
发送方
对象和已知滑块的指针。至于id
类型,它类似于C#的对象
类型,只是编译器会假设对它的所有方法调用都会成功(因此不会对任何调用发出警告)。非常感谢您的帮助。太好了,我想id相当于C#对象类型?不过,问题仍然存在-是否有一种令人愉快的方法可以确定触发事件的两个滑块中的哪一个?您可以使用==运算符比较发送方
对象和已知滑块的指针。对于id
类型,它类似于C#的对象
类型,只是编译器会假设对它的所有方法调用都会成功(因此不会对任何调用发出警告)。非常感谢您的帮助。将此作为官方“答案”,因为它更直接、更简洁地回答了我的问题。将此作为官方“答案”,因为它更直接、更简洁地回答了我的问题。您应该阅读可可装订。只需将标签和滑块绑定到相同的值;谢谢顺便说一句,好名字!你应该仔细阅读Cocoa绑定。只需将标签和滑块绑定到相同的值;谢谢顺便说一句,好名字!