-Hi,我有一个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];
}
答案 0 :(得分:0)
您根本不需要致电reloadData
。您需要做的就是更新所选的单元格。
在didSelectRowAtIndexPath
方法中,您可以通过调用cellForRowAtIndexPath
上的tableView
直接获取该单元格。这将返回显示的实际单元格,您可以直接设置它正在显示的图像。
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.imageView.image = ...;
或者,如果在配置每个实例时为其提供正常和选定的图像,则可以从单元子类控制图像显示。