我添加了一个uiimageview作为我的单元格的子视图。然后在它上面放一个标签,使它看起来像一个按钮。但是当桌子向上或向下滚动时,图像似乎再次被绘制。这个变得非常难看,因为我的图像具有透明效果,一旦它离开视图并且又回来就会丢失。???
答案 0 :(得分:3)
好的,我会猜测你的代码是什么样的:)
如果图像被多次绘制,则表示每次表视图查询单元格的数据源时都会添加它们:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView @"SomeID"];
if (cell == nil) {
// Create cell
}
UIImageView *imView = ... //Create and initialize view
[cell.contentView addSubview:imView];
...
return cell;
}
因此,每当您的单元格出现在屏幕上时(在用户滚动表格之后),新的图像视图实例将添加到单元格中。正确的方法是只添加一次图像视图 - 创建单元格然后获取并设置现有图像视图:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView @"SomeID"];
if (cell == nil) {
// Create cell
UIImageView *imView = ... //Create and initialize view
imView.tag = 1000; // or any other int value
[cell.contentView addSubview:imView];
}
UIImageView *iView = (UIImageView *)[cell.contentView viewWithTag:1000];
iView.image = ...// set required image
...
return cell;
}
因此,每次通过表格视图重复使用此单元格时,现有图像视图将填充适合当前行的图像。
我为每个单元格使用了一个单独的标识符。
通常这不是一个好主意 - 在这种情况下,表格将无法重复使用其单元格,您可能会遇到严重的性能问题