在UITableViewCell中单击UiImageView后如何访问表单元格-目标C

时间:2018-10-04 10:05:19

标签: ios objective-c

enter image description here

下面,我添加了使用TableViewCell的代码

MyMedsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyMedsTableViewCell" forIndexPath:indexPath];
cell.autoScrolling.hidden = NO;

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
singleTap.numberOfTapsRequired = 1;
[cell.autoScrolling setUserInteractionEnabled:YES];
[cell.autoScrolling addGestureRecognizer:singleTap];

在这里我添加了TableViewCell的头文件

#import <UIKit/UIKit.h>
#import "CustomView.h"
#import <AutoScrollLabel/CBAutoScrollLabel.h>

@interface MyMedsTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet CBAutoScrollLabel *autoScroll;
@property (weak, nonatomic) IBOutlet UIImageView *autoScrolling;

下面,我添加了单击imageview后用来调用单元格属性的方法

-(void)singleTapping:(UIGestureRecognizer *)recognizer {
    NSLog(@"image clicked");
}

我尝试了不同的方法,但仍然没有。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

据我了解,您在标题中的三个蓝色虚线imageView中检测到点击时遇到问题。

因此解决方案是使用UIButton代替标题中的UIImageView设置按钮图像属性的三个蓝色虚线图像。

在您的cellForRowAt中使用

cell.myButton.tag = indexPath.row;

现在在viewController类中为此按钮添加一个动作。

- (IBAction)myButton:(UIButton *)sender {

    // Here you can identify button by its tag value
    NSLog(@"Button %ld tapped", (long)sender.tag);
}

答案 1 :(得分:0)

1)使用UIBUtton insteaf的UIImageView是更好的选择。

2)如果您不能使用1)并且必须使用UIImageview,则可以使用以下命令访问单元格:

首先将Imageview的标签分配给Indexpath.row。

cell.autoScrolling.tag = indexPath.row;

您可以在tapgesturerecogniser方法中使用此标记。

    -(void)singleTapping:(UIGestureRecognizer *)recognizer {
          UIImageView *autoScrolling = (UIImageView *)[recognizer view];
          long  tag = autoScrolling.tag;
         NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tag  inSection:0];
           MyMedsTableViewCell *cell = (MyMedsTableViewCell *)[tblRegister cellForRowAtIndexPath:indexPath];

    //You can access property of cell now. 
 }