以编程方式将 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?
如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)