我想将一个变量传递给选择器中的buttonEvent方法。
[button addTarget:messageTableViewController action:@selector(buttonEvent)forControlEvents:UIControlEventTouchUpInside];
如何做到这一点,比如变量是否为uid?
方法签名是 - (void)buttonEvent:(NString *)uid;
答案 0 :(得分:1)
将所有按钮存储在一个数组中。
将要传递的参数存储在另一个数组中。
使用 - (IBAction)myAction:(id)发送者,在按钮数组中查找按钮(indexOfObject)
使用该索引从uid字符串数组中查找所需的值并继续。
另一种方法是将每个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];
}