Iphone tableview单元格中的图像

Iphone tableview单元格中的图像,iphone,uitableview,uikit,Iphone,Uitableview,Uikit,我在我的单元格中添加了一个uiimageview作为子视图。然后在它上面贴上一个标签,使它看起来像一个按钮。但是当表格上下滚动时,图像似乎又被涂上了。这变得非常难看,因为我的图像具有透明效果,一旦它离开视图并返回,它就会丢失。??好的,我将尝试猜测您的代码是什么样子:) 如果多次绘制图像,则意味着每次表格视图查询单元格的数据源时都要添加图像: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath

我在我的单元格中添加了一个uiimageview作为子视图。然后在它上面贴上一个标签,使它看起来像一个按钮。但是当表格上下滚动时,图像似乎又被涂上了。这变得非常难看,因为我的图像具有透明效果,一旦它离开视图并返回,它就会丢失。??

好的,我将尝试猜测您的代码是什么样子:)

如果多次绘制图像,则意味着每次表格视图查询单元格的数据源时都要添加图像:

- (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;
}
因此,使用这种方法,每次表视图重用单元格时,现有图像视图都会填充适合当前行的图像

我为每个单元格使用了一个单独的标识符


通常这不是一个好主意-在这种情况下,表将无法重用其单元格,并且您可能会遇到严重的性能问题

好的,我将尝试猜测您的代码是什么样子:)

如果多次绘制图像,则意味着每次表格视图查询单元格的数据源时都要添加图像:

- (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;
}
因此,使用这种方法,每次表视图重用单元格时,现有图像视图都会填充适合当前行的图像

我为每个单元格使用了一个单独的标识符


通常这不是一个好主意-在这种情况下,表将无法重用其单元格,并且您可能会遇到严重的性能问题

发布您的cellForRowAtIndexPath方法。从表面上看,你不正确地重复使用细胞。或更好的搜索-这里有很多类似的问题你的问题中至少应该有一个问号:)@Vladimir:我为每个单元格使用了一个单独的标识符。仍然没有帮助。我无法将代码粘贴到我的工作中\n你知道UIButton支持背景图像和文本-可能会让你做的任何事情都变得简单easier@Brian:但是这些东西都有预定义的位置。这就是为什么我采用这种方法发布你的cellForRowAtIndexPath方法。从表面上看,你不正确地重复使用细胞。或更好的搜索-这里有很多类似的问题你的问题中至少应该有一个问号:)@Vladimir:我为每个单元格使用了一个单独的标识符。仍然没有帮助。我无法将代码粘贴到我的工作中\n你知道UIButton支持背景图像和文本-可能会让你做的任何事情都变得简单easier@Brian:但是这些东西都有预先确定的位置。这就是我采取这种方法的原因。这太棒了!现在可以工作了。但是我做了一个更改。我没有在创建图像时将其添加到imView中,而是在创建图像时将其添加到imView中。它仍然可以工作。为什么以后添加图像?@Mithun-我在添加图像时假设每个单元格可能具有不同的图像,以便能够对任何行重复使用任何旧单元格。如果所有图像都是相同的,你确实可以在细胞生成时设置一次,这太棒了!现在可以工作了。但是我做了一个更改。我没有在创建图像时将其添加到imView中,而是在创建图像时将其添加到imView中。它仍然可以工作。为什么以后添加图像?@Mithun-我在添加图像时假设每个单元格可能具有不同的图像,以便能够对任何行重复使用任何旧单元格。如果所有图像都相同,您确实可以在创建单元格时设置一次