如何检测自定义UITableviewcell上按下了哪个UILabel?

时间:2011-10-16 17:33:42

标签: ios ios4 uitableview uilabel

我有两个标签,每个标签有两个单独的标签。

我想通过检查标签来检测哪个标签被按下了。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

我可以通过以下代码检索其中一个:

cell = [walltable cellForRowAtIndexPath:indexPath];
topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0];

但我不知道被压的那个。

有没有办法找到用户按下哪个标签?

3 个答案:

答案 0 :(得分:0)

您可以按照此问题和答案中的建议使用触摸事件和标签标记。

Handling Touch Event in UILabel and hooking it up to an IBAction

答案 1 :(得分:0)

如上所述,一种方法是为每个标签分配一个标签,然后在回调中评估调用UILabel的标签。

如果您使用自定义单元格(即,子类UITableViewCell,而不是您添加了自定义内容/布局的标准UITableViewCell),则另一种方法是简单地定义两者中的每一个标签作为子类单元格的属性。如果将标签指定为相应的属性,则可以针对调用者评估这些属性,并确定按下了哪个标签。

答案 2 :(得分:0)

我想指出的重要内容:您对标签的引用:

topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0];

不是正确的,通用的方法。我建议将单元格中的元素附加到IBOutlet,并从那里获取引用。 关于UILabel触摸事件的问题,我认为实现这一目标的一个好方法是在标签上添加UITapGestureRecognizer,如下所示:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(firstLabelTapped)];
[firstLabel addGestureRecognizer:tgr];
[tgr release];

对第二个标签执行相同操作。如果要将信息传递回TableView的视图控制器,请使用委托进行此操作。祝你好运!