Swift:如何在tableView中模拟一个单元格

时间:2014-11-18 18:19:01

标签: ios uitableview swift addsubview

我有一个显示照片的tableView。 我只是想添加一个subView,以便在单元格的顶部产生模糊效果。 我的问题是,当我使用didSelectRowAtIndex方法添加subView时,我的subView(my blur)被添加到重用的单元格...

这就是我所做的:

  override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let cell:WallTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as WallTableViewCell



    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = cell.imagePosted.bounds


    cell.imagePosted.insertSubview(blurEffectView, atIndex: indexPath.row)


}

有没有办法使用点击识别器添加模糊效果,所以当我点击时会添加模糊,当我再次点击时模糊被删除?以及如何仅在被点击的单元格上添加模糊?

1 个答案:

答案 0 :(得分:1)

问题是tableView.dequeueReusableCellWithIdentifier在此处调用是错误的方法。

您想调用cellForRowAtIndexPath,这是表视图上的一个方法,它返回表视图实际显示的单元格。您正在使用的内容tableView.dequeueReusableCellWithIdentifier提供了一个新鲜的"来自重用队列的单元格。

此外,您几乎肯定不想在didSelectRowAtIndexPath中添加/删除子视图。相反,您应该将模糊子视图添加为原始单元格设计的一部分,将其设置为hidden=true,然后通过设置hidden=false启用它们。