识别单击的单元格 - 初学者

时间:2015-03-23 05:49:50

标签: ios objective-c

我有一个UITableView。每行有5行和4个按钮。当用户点击按钮时,我想要检索行ID。

我使用UITapGestureRecognizer来识别所选的按钮。现在我想找到按钮所在的行。

我想使用cell.myButton.tag = indexRow.row;。但是,我无法从ImageTapped方法接收它。有人可以帮我吗 ?

以下代码是cellForRowAtIndexPath的一部分 的的cellForRowAtIndexPath

UITapGestureRecognizer *tap = nil;

            tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ImageTapped:)];

            [cell.myButton addGestureRecognizer:tap];

......对于其他按钮也是如此。

ImageTapped 方法

- (void) ImageTapped:(UITapGestureRecognizer *) recognizer {
    if(recognizer.state == UIGestureRecognizerStateEnded)
    {

    }
}

2 个答案:

答案 0 :(得分:0)

首先,为什么你要使用手势,不需要添加手势。你可以使用addTarget方法来做这件事。

使用此方法cellForRowAtIndexPath

myButton.tag = indexPath.row;
[myButton addTarget:self action:@selector(ImageTapped:) forControlEvents:UIControlEventTouchUpInside];

你可以使用这种方法:

- (void) ImageTapped:(id) sender {
    int rowId = [(UIButton *)sender tag];
}

其他明智的你可以这样:

cell.myButton.tag = indexPath.row;// In cellForRowAtIndexPath Method

- (void) ImageTapped:(UITapGestureRecognizer *) recognizer {

    if(recognizer.state == UIGestureRecognizerStateEnded)
    {
        int rowId = recognizer.view.tag;  
    }

}

答案 1 :(得分:0)

按钮将是小区的后代孩子。所以你可以使用以下代码获取单元格:

id view;
while (![(view = button.superView)  isKindOfClass:[UITableViewCell class]]) ;
// now view will be the parent cell.