0

-嗨,我有一个tableview重新加载数据的问题,我想做的是你把选定的单元格放在蓝色并更改一个图像,问题是如果我在 [self.mytableview reloadData] didselectedRow 蓝色背景消失了,如果我这样做,单元格的图像不会改变,我对这段代码有点迷茫,谢谢

if (indexPath.row == _selectedRow) {

            UIImageView *favView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"favIconSelected.png"]];
            CGRect frame = favView.frame;
            frame.origin.x = 294;
            frame.origin.y = 7;
            favView.frame = frame;

            [cell.contentView addSubview:favView];

            [favView release];
        }

 cell.selectedBackgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:SELCETED_BGIMGCELL]]autorelease];



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


    Product *p = [_productList objectAtIndex:indexPath.row];

    _selectedRow=indexPath.row;
    [_delegate productWasSelected:p];
    [self.myTableView reloadData];

}
4

1 回答 1

0

你根本不需要打电话reloadData。您需要做的就是更新选定的单元格。

在该方法中,didSelectRowAtIndexPath您可以通过调用cellForRowAtIndexPath. tableView这将返回显示的实际单元格,您可以直接设置它显示的图像。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.imageView.image = ...;

或者,如果在配置每个实例时为它提供正常图像和选定图像,则可以从单元子类控制图像显示。

于 2013-08-05T06:40:30.617 回答