【问题标题】:How to change Image of UIImageView in Tableview when it is clicked如何在单击时更改 Tableview 中 UIImageView 的图像
【发布时间】:2018-04-09 16:55:21
【问题描述】:

我有一个动态填充的表格视图。我的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);
}

【问题讨论】:

    标签: ios objective-c uitableview uiimageview


    【解决方案1】:

    这种情况的最佳实践。

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

    buttonAction

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

    就是这样。 如果仍然遇到问题,请告诉我。

    【讨论】:

      【解决方案2】:

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

      [(UIGestureRecognizer *)sender view]
      

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

      完整的解决方案是:

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

      【讨论】:

      • 老实说,我不太明白你想说什么,我在“Myfunction”函数中添加了第二行代码,但它不起作用
      • 在 UIImageView 转换后忘记了“*”,我已经对其进行了编辑,所以它现在应该可以工作了。
      • 上面所做的是获取被点击的视图(在这种情况下是 UIImageView),所以我将它转换为 UIImageView,以便我可以在其上调用 setImage。确保您在 imageNamed: 函数中有一个有效的图像名称,它应该可以工作
      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多