如何在选择器方法中发送两个参数?

时间:2009-12-07 04:28:39

标签: iphone objective-c cocoa-touch uikit

在下文中,如何在togButton方法中发送两个参数?我试过了,但没办法。

[button addTarget:self action:@selector(togButton:) 
             forControlEvents:UIControlEventTouchUpInside];

6 个答案:

答案 0 :(得分:4)

控制目标只接受一个参数用于其操作:被操纵的控件。没有办法做你想做的事(操作系统不支持它)。

答案 1 :(得分:2)

你想把它放在那里?也许您可以使用tag属性,或者如果这还不够,则继承UIButton并添加您可以在-togButton:中访问的实例变量。

答案 2 :(得分:1)

这是从UI组件

获取数据的一个例子
-(void) switchChanged:(id) sender
{
    UISwitch* switchControl = (UISwitch*)sender;
    UITableViewCell *cell = (UITableViewCell*)[sender superview];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    cell.textLabel.text =" change text title";
}

现在你有了cell和indexPath,你可以做你想做的事。我希望我能帮忙。

此外,您可以使用结构将参数包装在一个参数中。

答案 3 :(得分:0)

向方法发送两个参数的最佳方法是将它们包装在一个类中。例如,如果两个参数都是字符串,那么您将拥有一个仅由字符串iVars组成的类。

答案 4 :(得分:0)

[Class instancesRespondToSelector:@selector(setTo:over :))

我不是Objective-C大师,但我记得在书中看过这段代码。

答案 5 :(得分:0)

按钮点击调用的动作选择器可以有零个,一个或两个参数。第一个是发件人(被点击的按钮),第二个是事件(点按)。 有关控件,请参阅target-action mechanism

- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event

正如ThomasMüller所说,将特定于应用程序的数据传递给动作选择器的最佳方法是通过子类化UIButton(或者,如果是UITableViewCell上的按钮,则可以将特定于应用程序的数据添加到UITableViewCell子类中并按钮的superview.superview访问单元格。