自定义 UITableViewCell 图像直到滚动才显示

Posted

技术标签:

【中文标题】自定义 UITableViewCell 图像直到滚动才显示【英文标题】:Custom UITableViewCell image not showing until scrolling 【发布时间】:2013-03-05 22:46:26 【问题描述】:

我的自定义UITableViewCell 图像出现错误,直到滚动UITableView 才显示。它不会发生在所有单元格上,只有下一个正在打开或最近一个正在关闭(例如,如果您看到底部的一半单元格,您将无法看到图像,直到您将其一直滚动到视图中)

所以我决定也许我需要更好地将我的UIImages 关联到正确的自定义单元格。

我创建了一个名为“firstImageView”的UIImageView,然后我进入我的界面构建器并将其与正确的UIImageView相关联。

然后在tableview:cellForRowAtIndexPath:里面我试着这样设置

myCustomCell.firstImageView.image = [UIImage imageNamed:@"SMILE.png"];

但是我得到了这个错误

在“UITableViewCell *”类型的对象上找不到属性“firstImageView”

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

为了解决您对即将发布的图片的错误,我的回答是:当您像这样获得UITableViewCell

MyCustomCell *myCustomCell = [self.tableView dequeueReusableCellWithIdentifier:@"myCustomCellIdentifier"];

您可以实现 -(void)prepareForReuse 覆盖 UITableViewCell 的方法。否则,也可以在您的单元格出列后在您的 -(UITableViewCell *)tableView:cellForRowAtIndexPath: 方法中设置自定义内容。

您可以在此处获取更多信息: How to use prepareForUse-Method 和 Apple Documentation of UITableViewCell

解决未知类属性的另一个问题:您的myCustomCell 是什么类型?在界面生成器中,您必须分配正确的类型,并且您的 myCustomCell 也必须是正确的类型。

【讨论】:

好的,谢谢.. 将阅读有关 prepareForUse 的更多信息.. 我有几个不同的客户 tableviewcells 是否重要 对于您使用的所有自定义UITableViewCell 类,您必须实现此方法。在调用dequeueReusableCellWithIdentifier: 时调用它。 这不是真的。我用自定义单元做了很多项目,但从未实现过这种方法。他可能没有将单元格的类更改为他的子类,这就是为什么错误是 UITableViewCell 而不是他的类是什么。 该死的我想不通..我很想有人检查我的 tableview:cellForRowAtIndexPath: 方法,但我正在做一个敏感的项目,我不想在网上发布很多细节... @rdelmar 这取决于您的单元初始化。当您使用[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"someReuseIdentifier"][someTableView dequeueReusableCellWithIdentifier:@"someIdentifier"] 初始化单元格时,情况会有所不同。在第一种情况下,您正在初始化一个新单元,并且不使用重用标识符。在后一种情况下,您将具有给定重用标识符的单元格出列,因此,单元格被重用,您必须设置新的自定义内容,例如自定义图像。【参考方案2】:

这里 122,111 是表格视图单元格中图像视图的框架,将其替换为您的 `` UIGraphicsBeginImageContextWithOptions(itemSize, NO,UIScreen.mainScreen.scale); ˚˚CGSize itemSize = CGSizeMake(122,111); CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height); [imageView.image drawInRect:imageRect]; imageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

【讨论】:

【参考方案3】:

在使单元格出列时,您是否将其转换为您的自定义单元格类?

MyCustomCellClass *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

【讨论】:

【参考方案4】:

看起来您创建了一个自定义 UITableViewCell 子类,但您没有使用您在 IB 中分配的标识符(“重用标识符”)将其出列..

【讨论】:

以上是关于自定义 UITableViewCell 图像直到滚动才显示的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 子类,错误的高度直到滚动

UITableVIewCell 重叠图像中的自定义按钮

带有 UIImageView 的自定义 UITableViewCell 不显示图像

自定义 UITableViewCell 中的 UIImageView - 始终调整为图像大小

UIImageView 未在自定义 UITableViewCell 中显示图像

带有用于突出显示的图像的自定义 UITableViewCell