iPhone:将值传递给通过@selector()调用的方法

时间:2009-10-30 02:56:59

标签: iphone

我想将一个变量传递给选择器中的buttonEvent方法。

[button addTarget:messageTableViewController action:@selector(buttonEvent)forControlEvents:UIControlEventTouchUpInside];

如何做到这一点,比如变量是否为uid?

方法签名是 - (void)buttonEvent:(NString *)uid;

3 个答案:

答案 0 :(得分:1)

  1. 将所有按钮存储在一个数组中。

  2. 将要传递的参数存储在另一个数组中。

  3. 使用 - (IBAction)myAction:(id)发送者,在按钮数组中查找按钮(indexOfObject)

  4. 使用该索引从uid字符串数组中查找所需的值并继续。

  5. 另一种方法是将每个UIButton的.tag整数值设置为索引,再次放入uid数组中。

答案 1 :(得分:0)

首先,您需要在@selector调用中包含冒号:

[button addTarget: messageTableViewController action: @selector(buttonEvent:) forControlEvents: UIControlEventTouchUpInside];

其次,你无法做到你想要的。传递给buttonEvent:的参数将始终是触及的实际控件。您可以使用该控件来确定下一步操作(即,直接使用它,或设置其标记并使用它)。

答案 2 :(得分:-1)

目标操作机制会将操作的发件人发送到选择器的参数,在您的情况下,是按下的按钮。我认为没有办法解决它。

您可能希望将您的uid与按钮相关联(例如,在NSDictionary中),并在action方法中获取它,例如:

- (void)buttonEvent:(id)sender
{
    NSDictionary *dict = self.buttonToUidDict;
    NSString *uid = [dict valueForKey:sender];
}