记住动画后的单元格状态

Posted

技术标签:

【中文标题】记住动画后的单元格状态【英文标题】:Remember state of cell after animation 【发布时间】:2020-06-25 19:38:42 【问题描述】:

非常感谢以下任何建议。

我正在尝试让我的表格记住动画完成后的状态。下面是我的表格,当我按下“邀请”按钮时,动画会从单元格中删除按钮。但是在向下滚动和向后滚动时,reusableCell 会再次绘制按钮。

我决定使用数组来记住,哪些单元格是动画的,但不知道如何在单元格创建过程中不绘制单元格的某些元素(按钮)。

【问题讨论】:

【参考方案1】:

试试这个: 创建一个名为 animationIsCalled 的布尔变量并将其设置为 false。

var animationIsCalled = [Bool](repeating: false, count: numberOfTableViewCells)

@IBAction func buttonPressed(sender: UIButton)
    if animationIsCalled
        //Your code is here
    
    animationIsCalled[indexPath.row] = false

我不知道你的方法是不是IBAction类型,但是如果是,你就不能使用indexPath.row。但是尝试使用这个布尔变量的想法,因为我以前使用过它,这是一个非常有用的策略。 希望这会有所帮助。

【讨论】:

【参考方案2】:

亚历克斯,非常感谢您的回答!经过一些实验,以下代码起作用了:

//Create array to remember already animated cells
var sectionTwoSent = [String]()

//Once button tapped append user_id to array above
self.sectionTwoSent.append(self.sectionTwo[indexPath.row].user_id)

//During cell creation, make check and alpha = 0 to hide buttons
for item in sectionTwoSent 
 if contact.user_id == item 
    cell.inviteButton?.alpha = 0
    cell.removeButton?.alpha = 0
    cell.invitationDoneLabel?.alpha = 1
    break
     else 
       cell.inviteButton?.alpha = 1
       cell.removeButton?.alpha = 1
       cell.invitationDoneLabel?.alpha = 0
    

【讨论】:

以上是关于记住动画后的单元格状态的主要内容,如果未能解决你的问题,请参考以下文章

尝试在collectionview中为不可见单元格设置动画时如何防止延迟

插入带有大单元格的表格单元格动画

动画 UICollectionView 单元格大小更改和重新定位周围的单元格

如何在swift 3中重新加载没有动画的特定单元格?

具有调整单元格动画大小的动态单元格大小

动画在具有动态单元格高度的单元格中添加子视图