如何从UITableViewCell中删除背景图像?

时间:2012-12-10 07:36:44

标签: iphone ios uitableview

在我的应用中,我UITableView中有一个UIView。我为所有单元格添加了背景图片。我的问题是,当我选择一个特定的单元格时,我想单独更改该特定单元格的背景图像,而所有其他单元格应该具有旧的背景图像。 我怎样才能做到这一点。请分享您的想法。

这是我的cellForRowAtIndexPath代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MenuItem3"]];

    cell.backgroundView = bgView;



    cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:14];



    cell.textLabel.textColor = [UIColor whiteColor];
    cell.textLabel.text = [arrayValue objectAtIndex:indexPath.row];
    [cell setAccessoryType:UITableViewCellAccessoryNone];
    cell.selectionStyle =  UITableViewCellSelectionStyleNone;
    return cell;
}

4 个答案:

答案 0 :(得分:1)

您可以使用以下代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView.tag == 3)// We are checking if it's the desire tableview. If you have only one tableview then you can remove this if.
        {
            [tableView reloadData];
            UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
            cell.backgroundView = bgView; // Here set the particular image u want.
        }
    }

答案 1 :(得分:1)

试试这段代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *objCustomCell = (UITableViewCell *)[tableView  cellForRowAtIndexPath:indexPath];
    UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NewImage"]];
    objCustomCell.backgroundView = bgView;
}

答案 2 :(得分:1)

无需重新加载所有表格,只需像这样重新加载PreviousInxed

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }


    cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bck.png"]];

    UITableViewCell *celld = (UITableViewCell *)[tableView cellForRowAtIndexPath:table.indexPathForSelectedRow];
    celld.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"raj_star.png"]];

    return cell;
}

NSIndexPath *perviouseIndexPathaf;

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    if (perviouseIndexPathaf)
    {
        [table reloadRowsAtIndexPaths:[NSArray arrayWithObject:perviouseIndexPathaf]
                     withRowAnimation:UITableViewRowAnimationNone];
    }
    UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"raj_star.png"]];
    perviouseIndexPathaf = indexPath;

}

答案 3 :(得分:0)

除了您的代码,请添加以下代码。

UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectedMenuItem3"]];

cell.selectedBackgroundView = bgView;

有关详细信息,请查看UITableViewCellselectedBackgroundView

文档