简体   繁体   中英

Swift : how to blurry a cell on tap in tableView

I have a tableView that displays photos. I just want to add a subView in order to make a blur effect on the top of the cell. My problem is that when i add the subView using didSelectRowAtIndex Method, my subView (my blur) is added to the reused cells...

Here is what i did :

  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)


}

Is there a way to add the blur effect using a tap recognizer, so when i tap the blur is added and when i tap a second time the blur is removed ? And how to add the blur only on the cell who was tapped ?

The problem is tableView.dequeueReusableCellWithIdentifier is the wrong method to call here.

You want to call cellForRowAtIndexPath , which is a method on the table view that returns the cell actually being displayed by the table view. What you're using, tableView.dequeueReusableCellWithIdentifier , provides a "fresh" cell from the re-use queue.

Also, you almost certainly don't want to add/remove subviews in the didSelectRowAtIndexPath . Instead, you should probably add the blur subviews as part of your original cell design, set them to hidden=true , and then enable them by setting hidden=false .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM