确定事件发件人的最佳方法

时间:2011-10-15 18:11:34

标签: ios cocoa-touch event-handling sender

我对iOS应用程序中的事件处理提出了一个简单的问题...假设您有一个应用程序,其中有一些按钮可以对调用相同操作的TouchUpInside事件作出反应,操作方法中最好的方法是了解什么是触发事件的按钮?我知道可以使用按钮的标题轻松完成,但我认为如果您有一个本地化的应用程序,其中按钮文本可能会更改(除非可以反转标题的本地化,即从本地化的字符串中检索原始字符串)...是否有关于此主题的良好实践?我应该使用按钮的其他属性来区分不同的按钮吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

您可以为UIButton设置一个称为“标签”的东西,或者可以响应事件的任何东西。如果使用的是Interface Builder,请单击该项的属性检查器,然后为该标记选择一个值(整数)。在您的代码中执行类似的操作......

...

- (IBAction)buttonReceived:(id)sender
{ 
    if ([sender tag] == 1) {
       //Do something
    }
    else if ([sender tag] == 2) {
       //Do something else
    }
}

答案 1 :(得分:3)

除了tag属性之外,或者如果您已经将标记用于其他目的,这意味着一个或多个不同按钮的重复标记值,您始终可以为所需的每个按钮设置IBOutlet ivar检查,然后在IBAction中,做这样的事情:

- (IBAction)buttonReceived:(UIButton *)sender
{ 
    if (sender == myButtonA) {
       // processing for button A
    }
    else if (sender == myButtonB) {
       // processing for button B
    }
}

这是一项更多的工作,但它有时会派上用场。