【问题标题】:addSubview to specific uitableviewcell on selectaddSubview 到特定的 uitableviewcell 上选择
【发布时间】:2012-01-27 21:10:58
【问题描述】:

我有一个 tableview,我想在它被选中的行的单元格的 contentView 中添加一个 imageview。

这是我当前的代码,当我单击任何单元格时,它只会将 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];
}

【问题讨论】:

  • 您没有显示cell 是如何声明/初始化的。我会 NSLog 它以确保它是有效的......最好使用- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

标签: uitableview addsubview didselectrowatindexpath


【解决方案1】:

你可以这样做

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

【讨论】:

    【解决方案2】:

    首先,您没有在特定行识别单元格。由于您的编译器没有抱怨,因此我假设该单元格是 ivar。它指向它所指向的最后一个单元格,很可能是表格中的最后一个单元格。

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

    因此,如果您查看了该答案,您会读到 tableview 方法确保即使在 tableview 滚动并且单元格出现和消失时也正确呈现单元格。我建议您使用某种标记或属性设置数据源,您可以使用这些标记或属性来查看该图像是否需要存在。这样,即使您滚动单元格,它也会在那里消失并重新出现。

    【讨论】:

    • 抱歉,“不要在 UITableview 方法之外设置单元格的内容”是完全错误的。在谈论重新加载单元格时,Apple 文档说如果您可以仅更新单元格视图,请执行此操作而不是重新加载。某些类型的附件(不是 UIViews 的东西)不一定会更新,但简单的视图层次结构应该没问题。
    • 我没有说要重新加载。进行重新加载的机制与我提出的观点无关。将单元格更新放入 cellForRowAtIndexPath: 方法(或通过源自那里的方法调用)可确保在渲染单元格时,同时正确渲染内容。这可能是由于程序员的代码显式调用了重新加载方法之一而发生的,但它也确保在用户滚动表格时呈现内容是正确的。这是因为 tableView 管理重新加载单元格的需要。
    • 很抱歉。我试图参考 Apple 文档,但我无法将手指放在硬参考上:它就在他们谈论重新加载的地方附近(尽管我意识到这不是重新加载案例。)我只是想指出一个 UITableViewCell 是一个 UIView 并且所有正常的 UIView 方法都适用于它们。
    • 没问题。如果你是投反对票的人,那么你能撤消它吗?
    • 对不起,但我认为我们仍然不同意。我认为您是说他不应该在didSelectRowAtIndexPath 中添加子视图,这完全没问题。更改editingAccessoryType 之类的内容似乎有问题,但添加子视图不是问题。
    【解决方案3】:

    在 Swift 2.0 中使用 UIcollectionView 和 UItableviewcell 为我工作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2014-10-23
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多