2012-01-27 48 views
1

具体的UITableViewCell我有一个tableview中,我想一个imageview的增加它在选择在该行的单元格的内容查看。addSubview对选择

这是我当前的代码,当我点击任一单元格它只会将imageView添加到最后一行,而不是我点击的那一行。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    playIcon = [[UIImageView alloc]initWithFrame:CGRectMake(20, 22, 9, 12)]; 
    UIImage *image = [UIImage imageNamed: @"cell_play.png"]; 
    [playIcon setImage:image]; 
    [cell.contentView addSubview:playIcon]; 
} 
+0

你没有表现cell'如何'声明/初始化。我会NSLog它,以确保它是有效的...最好使用' - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath'。 – smparkes 2012-01-27 21:36:00

回答

0

首先,您没有在特定行处识别出单元格。既然你的编译器没有抱怨,我认为这个单元是一个伊娃。它指向它指向的最后一个单元格,这很可能是表格中的最后一个单元格。

您必须小心,不要在UITableview方法外设置单元格的内容,包括UITableView方法cellForRowAtIndexPath:`。这在我提供的最近答案at this link中有描述。

所以,如果你看到这个答案,你会看到tableview方法确保单元格被正确渲染,即使当tableview滚动和单元格出现和消失。我建议您使用某种标签或属性设置数据源,以便您可以使用该标签或属性查看该图像需要存在。这样,即使您滚动单元格,它也会在那里消失并重新出现。

+0

不好意思,但是“不要在UITableview方法之外设置单元格的内容”显然是错误的。在谈论重新加载单元格时,Apple文档说,如果您可以更新单元格视图,请执行此操作而不是重新加载。绝对正确的是,某些类型的附件(非UIViews的东西)不一定会更新,但直观的视图层次结构应该没问题。 – smparkes 2012-01-27 21:33:54

+0

我没有说任何关于重新加载的内容。重新加载的机制与我所创造的点无关。将单元格更新放入cellForRowAtIndexPath:方法(或通过源头方法调用)可确保在渲染单元格时同时正确渲染内容。这可能是由程序员的代码明确调用其中一个重载方法引起的,但它也可以确保在用户滚动表格时呈现内容是正确的。这是因为tableView管理需要重新加载单元格。 – Jim 2012-01-27 23:13:57

+0

对不起。我试图引用苹果文档,但我无法将自己的手指放在硬引用上:它在某处附近谈论重装(尽管我意识到这不是重装例)。我只是想指出一个UITableViewCell是一个UIView,并且所有正常的UIView方法都可以。 – smparkes 2012-01-27 23:27:21

1

你可以像雨燕2.0对我来说这

[[tableView cellForRowAtIndexPath:indexPath] addSubview:playIcon]; 
0

工作,UIc​​ollectionView和定义UITableViewCell:

CV_Posts.cellForItemAtIndexPath(index)?.addSubview(imag_curtir)