将参数传递给@selector方法

时间:2011-03-09 13:54:08

标签: ios objective-c cocoa-touch uibutton selector

我在表格视图中添加了UIButton。现在,当我单击某个特定按钮时,我需要获取与该行对应的对象的详细信息。

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

我已将此方法用于按钮;如何将参数传递给此选择器方法?或者,当单击此按钮时,是否还有其他方法可以将参数传递给此方法?

2 个答案:

答案 0 :(得分:3)

作为操作添加到UIControl的方法可以有3个不同的签名

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

你无法传递自己的对象。通常可以在发送者(您的按钮)对象的帮助下获得您尝试传递的任何对象。

如果tableviewcell中有一个按钮,你可以使用类似的东西来获取单元格的索引路径。

- (IBAction)buttonAction:(id)sender {
    UIButton *button = (UIButton *)sender;
    CGPoint buttonOriginInTableView = [button convertPoint:CGPointZero toView:tableView];
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:buttonOriginInTableView];

    // do something
}

使用indexPath,您可以获得所需的对象。

答案 1 :(得分:0)

不,不是真的。点击事件是

-(IBAction) fnc:(id)sender;

如果你想调用另一种方法,你需要在该形式的函数中这样做。

-(IBAction) fnc:(id) sender
{
   UIButton *b = (UIButton*) sender;
   [self otherFnc:b arg:arg1 arg2:arg2];
}