以编程方式将 UIImageViews 添加到 UITableViewCell

Posted

技术标签:

【中文标题】以编程方式将 UIImageViews 添加到 UITableViewCell【英文标题】:Programmatically add UIImageViews to UITableViewCell 【发布时间】:2020-02-21 22:39:04 【问题描述】:

对于我的 tableView 中的每个单元格,我想以编程方式添加 UIImageViews,因为每个单元格将有不同数量的 imageViews。当我插入一个新单元格时,它包含来自下一个单元格的 imageViews。如何确保 imageViews 不会与其他单元格重叠?

这是我在自定义UITableViewCell 中使用的方法来添加图像视图。

 -(void)setImageViews:(int)images
      x=0;
      for (int i=0;i<images;i++)
           UIImageView *imgV=[[UIImageView alloc]initWithFrame:CGRectMake(x,5, 36, 36)];
           [imgV setImage:[dic objectForKey:@"image"]];
           [self addSubview:imgV];

           x=x+36;
      
 

我认为我必须为每个单元格保留一个唯一标识符并检查它是否与当前单元格匹配。像这样的

-(void)setImageViews:(int)images forIndexPath:(int)row
     if ((!self.cellIdentifier)||([self.cellIdentifier isEqualToString:[NSString stringWithFormat:@"%i", row]]))
         self.cellIdentifier=[NSString stringWithFormat:@"%i", row];
          x=0;
          for (int i=0;i<images;i++)
               UIImageView *imgV=[[UIImageView alloc]initWithFrame:CGRectMake(x,5, 36, 36)];
               [imgV setImage:[dic objectForKey:@"image"]];
               [self addSubview:imgV];

               x=x+36;
          
     

但这不起作用

【问题讨论】:

你对一个单元格可以包含的图像数量有一个已知的最大限制吗? @AdamPro13 我没有在上面添加这个,但是如果 imageView 在屏幕边缘被切断,我会打破循环。因此,在被切断之前,最大图像非常适合。 您应该将图像子视图添加到 self.contentView 而不是 UITableViewCell 直接 【参考方案1】:

在自定义 UITableViewCell 中实现

override func prepareForReuse() 
    contentView.subviews.forEach  (subView) in
        if let imageView = subView as? UIImageView 
            imageView.removeFromSuperview()
        
    

【讨论】:

以上是关于以编程方式将 UIImageViews 添加到 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义单元格中点击以编程方式添加的 UiImageViews 推送新视图

如何将 UIImageViews 添加到受限于视图的 centerXAnchor 的 UIStackView?

以编程方式向 UIImageView 添加约束

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)

以编程方式将视图添加到 UIWebView (iPhone/iPad) 的每个页面

以编程方式创建 UIToolbar