如何检查单元格是否已显示Swift

时间:2016-07-21 09:55:45

标签: ios swift uitableview cell

当我显示我的桌面视图时,我已经让我的单元格出现了这样的动画。

lambda:GetFunctionConfiguration

它的工作方式与此类似,但是当我下来然后再次查看以前的单元格时,动画仍然存在。

显示我相信我必须检查是否已显示该单元格。

我尝试的是使用didEndDisplayingCell函数并将cell.tag放入数组中,然后我检查当前单元格是否在array.contains(cell.tag)的数组中,但它没有工作。 实际上,动画只适用于三个第一个单元格,然后没有任何内容。

3 个答案:

答案 0 :(得分:4)

您应该保留一个indexPaths数组,每当显示一个单元格时都会添加它。这样您就可以检查单元格是否已经设置了动画。

if (!indexPaths.contains(indexPath)) {
    indexPaths.append(indexPath)
    cell.alpha = 0
    let rotation = CATransform3DTranslate(CATransform3DIdentity, -250, 20, 0)
    cell.layer.transform = rotation
    UIView.animateWithDuration(0.9){
        cell.alpha = 1
        cell.layer.transform = CATransform3DIdentity
    }
}

答案 1 :(得分:1)

正如@ James-P在评论中提到的 - 只需创建一个数组

var indexPathArray = [NSIndexPath]()

并重写你的willDisplayCell方法:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    if !indexPathArray.contains(indexPath) {

        indexPathArray.append(indexPath)

        cell.alpha = 0
        let rotation = CATransform3DTranslate(CATransform3DIdentity, -250, 20, 0)
        cell.layer.transform = rotation
        UIView.animateWithDuration(0.9){
            cell.alpha = 1
            cell.layer.transform = CATransform3DIdentity
        }
    }
}

答案 2 :(得分:1)

你可以做的是将单元格的索引路径放在一个数组中并检查索引路径是否在数组中。如果索引路径在数组中则不执行动画