0

我需要通过单元格的 addSubview 方法添加的图像上的单击事件,并在表格视图中设置最喜欢和不喜欢的标志。请注意,我不需要单元格的 didSelectRowAtIndexPath 方法来完成此任务。请参考以下代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    UIImage *myImage = [[UIImage alloc]init];
    myImage = [UIImage imageNamed: @"Favourite.png"];
    UIImageView *imgName = [[UIImageView alloc]initWithImage:myImage];
    imgName.frame = CGRectMake(270, 10, 25, 25);
    [cell addSubview:imgName];


    cell.textLabel.text = @"Hello";

    return cell;
}

我如何在 imgName 上获得点击事件?

4

1 回答 1

0

我建议你创建一个 UITableViewCell 的子类。将其作为 UIImageView 的属性。然后在那个子类中,向 UIIMageView 添加一个 UITapgestureRecognizer 并让它调用自己的一些选择器(例如 -(void) imageViewTapped: (id) sender)。给子类一个属性'delegate',并使其采用在UITableViewCell 的.h 文件中定义的协议。添加一个方法,如

- (void) imageViewTappedOnTableViewCell: (YourSubclassOfUITableViewCell *) cell;

然后可以在您添加到点击识别器的选择器(例如 imageViewTapped:) 中的委托上调用此方法。回到 viewControllers cellForRowAtIndexPath:您可以将单元格的委托设置为该 viewController。然后在 viewController 上实现协议中的方法。当您发送作为参数被点击的单元格时,您可以向 tableView 询问该单元格的 indexPath 并采取相应的行动。

非常清晰的设计,正是您正在寻找的(请注意, didSelectCellForRowAtIndexPath: 几乎在做相同的概念 t (兴,除了它为您提供 indexPath 而不是单元格)。

于 2013-11-02T16:40:47.983 回答