如何在单击时更改Tableview中UIImageView的图像

时间:2017-10-28 03:34:13

标签: ios objective-c uitableview uiimageview

我有一个动态填充的表格视图。我的cellForRowAtIndexPath方法的代码是:

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {

UIImage * ImageFavorited = [UIImage imageNamed:@"Favorited"];

        UIImageView *ImageViewFavorited = (UIImageView *)[cell viewWithTag:7];
        ImageViewFavorited.image =ImageFavorited;

        ImageViewFavorited.userInteractionEnabled = YES;


        NSString *uiid = [[collectionFromData valueForKey:@"id"] objectAtIndex:(indexPath.row)];
        MYTapGestureRecognizer *tapped = [[MYTapGestureRecognizer alloc] initWithTarget:self action:@selector(myFunction:)  ];
        tapped.data = uiid;
        tapped.numberOfTapsRequired = 1;
        [ImageViewFavorited addGestureRecognizer:tapped];

}

我知道,我知道,MYTapGestureRecognizer看起来很奇怪,我实际上扩展了UITapGestureRecognizer所以我可以用它传递数据。 (谢谢StackOverFlow用户),所以现在我的问题是我想在用户点击后更改我点击的UIImageview的图像。现在我检测到myfunction功能中的点击,但我似乎找不到改变图像的方法。

myfunction的代码是:

-(void)myFunction :(id) sender
{
    MYTapGestureRecognizer *tap = (MYTapGestureRecognizer *)sender;

    NSLog(@"data is  = %@", tap.data);
}

2 个答案:

答案 0 :(得分:0)

将以下内容添加到myFunction以获取发件人视图:

[(UIGestureRecognizer *)sender view]

然后你可以改变那些视图属性,因为在你的情况下它是一个UIImageView,只需将其转换为UIImageView并更改图像属性。

完成的解决方案将是:

[(UIImageView*) [(UIGestureRecognizer *)sender view]] setImage:[UIImage imageNamed:”blah”]] 

答案 1 :(得分:0)

针对这种情况的最佳做法。

而不是UIImage使用UIButton并绑定viewController中的操作。 设置defaultSelected状态故事板的按钮图像,或按照您的操作设置代码。

buttonAction

sender.selected = !sender.selected;
tableView.raeloadData();

多数民众赞成。 如果仍然面临问题那么让我知道。