Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone addTarget:action:forControlEvents:你能传递字典或任何东西吗_Iphone - Fatal编程技术网

Iphone addTarget:action:forControlEvents:你能传递字典或任何东西吗

Iphone addTarget:action:forControlEvents:你能传递字典或任何东西吗,iphone,Iphone,我有一个用于UITableView的自定义单元格。单元格中有一个名为ShowData的按钮。我为该按钮添加了一个选择器: [cell.ShowData addTarget:self action:@selector(ShowData:) forControlEvents:UIControlEventsTouchUpInside]; 在我的ShowData:method中,我想要一些显示单元格时使用的信息。我如何以这种方式传递信息?谢谢。您的showData:将收到按钮本身作为其发送方的参数。可

我有一个用于UITableView的自定义单元格。单元格中有一个名为ShowData的按钮。我为该按钮添加了一个选择器:

[cell.ShowData addTarget:self action:@selector(ShowData:) forControlEvents:UIControlEventsTouchUpInside];

在我的ShowData:method中,我想要一些显示单元格时使用的信息。我如何以这种方式传递信息?谢谢。

您的
showData:
将收到按钮本身作为其
发送方的参数。可以在按钮的超级视图上漫游,直到找到自定义单元格,然后访问添加到该单元格的任何属性

- (IBAction)showData:(id)sender
{
    while (sender && ![sender isKindOfClass:[MyCustomTableViewCell class]])
        sender = [sender superview];
    if (!sender) {
        // error
    }

    MyCustomTableViewCell *cell = sender;
    // do stuff using cell
}

在这种情况下,我通常对按钮进行子类化,并添加ivar以将其与UITableViewCell标识

例如,您可以有两个NSInteger属性buttonIndex和buttonSection来标识按钮所在的tableview的节和行

在cellForRowAtIndexPath中构造单元格时,可以将indexPath.row分配给buttonIndex,将indexPath.section分配给buttonSection

现在,在showData方法中,只需将发件人作为自定义按钮读入,然后访问这些属性:)

编辑:


如果您使用的是单节tableview,那么只需设置button.tag=indexPath.row即可。UIButton继承自UIView,UIView有一个专门用于此目的的标记属性。

发现这是在选择器上传递额外数据的唯一方法。这显然不是最好的做法。每个人都是这样做的吗?@rob mayoff我该如何在代码中这样做?现在我刚刚得到我的[button superview],然后我发现它属于UITableViewCellContentView类型,这是我以前从未见过的。我试图调用superview,但我得到一个未声明标识符UITableViewCellContentView的错误。我不确定这是一个什么样的自动循环?谢谢