我在我的IF clausure中,在cellForRowAtIndexPath方法中做到了这一点:
EventDate >= date('now')
在我的ELSE中,我想从cell.attachedImage中删除效果。
我该怎么办?
答案 0 :(得分:3)
cellForRowAtIndexPath
不应该向细胞添加子视图。这是有问题的,因为单元格被重用,如果你没有保留对你添加的内容的引用,你最终会多次添加视图,这会导致滚动速度问题,以及其他错误。
正确的方法是创建已经设置了视图的单元子类。您的子类可以包含引用视图的属性,以便您可以根据需要更改,隐藏,移动或从超级视图中删除它们。但是这个逻辑应该在细胞亚类中。
答案 1 :(得分:0)
您只需要从它的超视图中删除视觉效果视图。诀窍是找到正确的视图,以便在电池回收时移除。最简单的方法是将其存储在自定义UITableViewCell
实现中:
class CustomTableViewCell: UITableViewCell {
var visualEffectView: UIView?
var attachedImage: UIImageView!
// other views, including outlets
func setupIsBlurred(isBlurred: Bool) {
if isBlurred {
if self.visualEffectView == nil {
let blurEffect = UIBlurEffect(style: .Light)
let visualEffectView = UIVisualEffectView(effect: blurEffect)
visualEffectView.frame = self.attachedImage.bounds
self.attachedImage.addSubview(visualEffectView)
self.visualEffectView = visualEffectView
}
} else {
self.visualEffectView?.removeFromSuperview()
self.visualEffectView = nil
}
}
}