gpt4 book ai didi

iphone - UITableViewCell 缓存其 backgroundView 属性

转载 作者:行者123 更新时间:2023-11-28 17:47:32 26 4
gpt4 key购买 nike

我有一个 UITableView,它使用带有自定义 backgroundView 的单元格。我正在按照建议在 tableView:cellForRowAtIndexPath:indexPath: 中分配 backgroundViews here .简而言之,根据 UITableViewCell 在其 UITableView 中的位置,我想分配某些 backgroundView 图像。这是有问题的代码:

UIImage *rowBackground = nil;

if (row == 0 && row == sectionRows - 1) {
rowBackground = [UIImage imageNamed:@"row_bg_start_and_end.png"];
} else if (row == 0) {
rowBackground = [UIImage imageNamed:@"row_bg_start.png"];
} else if (row == sectionRows - 1) {
rowBackground = [UIImage imageNamed:@"row_bg_end.png"];
} else {
rowBackground = [UIImage imageNamed:@"row_bg.png"];
}

((UIImageView *)cell.backgroundView).image = rowBackground;

这工作正常,我看到了我期待的结果。然而,当涉及到删除或添加行时,我遇到了问题,这总是意味着某些行保留了它们以前的背景 View ,而不是重新计算它们的位置并更新有问题的 View 。

我理解 dequeueReusableCellWithIdentifier 的目的以及为什么会发生这种情况。但我不确定如何正确 修复它。我可以看出,当 tableView:cellForRowAtIndexPath:indexPath: 被调用时,通过将它们滚动到屏幕外,行被正确地重新计算,这导致它们的 backgroundView 被正确重置。

我是否也应该在 willDisplayCell:forRowAtIndexPath: 中设置 backgroundView 属性?我应该如何处理这种情况?

最佳答案

解决您遇到的问题的最简单方法是在向部分添加新行时重新处理所有可见行的背景图像。

for (UITableViewCell *cell in aTableView.visibleCells)
{
NSIndexPath *cellIndexPath = [aTableView indexPathForCell:cell];

/* look at the cell.backgroundImage and if it's not appropriate
for the indexPath, update it */
}

您可以小心地覆盖所有插入新行的 UITableView 方法,并且只检查对需要更新的特定行执行此工作,但我认为这不值得付出努力。

关于iphone - UITableViewCell 缓存其 backgroundView 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com