繁体   English   中英

使用Swift隐藏隐藏的静态表格视图单元格

[英]Hide unhide Static Table View Cells with Swift

我试图用一些可扩展和折叠的单元格制作一个“静态表”。 我重写了''':WithAnimation :)'''应该为动画过渡提供了一些控制。 不幸的是,返回的单元格是空白的,我并不是说是空的,但是单元格消失了,它们的位置在表中是空白的。 当我尝试使用'''reloadSections()'''时,整个部分也将返回空白。 经过一番尝试之后,我开始怀疑'''reloadRowAtIndexPath(:WithAnimation :)'''和'''reloadSections()'''与与数据源关联的表一起使用。 我对吗? 如果是,如何控制要隐藏/取消隐藏的单元的动画,以使过渡平滑? 谢谢(编辑)

要获得平滑的动画,只需使用以下命令重新加载tableView

tableView.beginUpdates()
tableView.endUpdates()

这将自动调用heightForRowAtIndexPath并呈现平滑过渡。

扩大irkinosor的答案。 在此示例中,我有1个部分,包含3个静态行。 最初加载tableView时,我的UISwitch已关闭,我只希望第一行(行0)可见(隐藏1,2行)。 当UISwitch打开时,我想显示(第1,2行)。 另外,我希望具有隐藏或显示行手风琴的平滑动画。

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    if indexPath.row > 0 && toggleSwitch.isOn == false {
        return 0.0  // collapsed
    }
    // expanded with row height of parent
    return super.tableView(tableView, heightForRowAt: indexPath)
}

在我的切换操作中,我启动tableView刷新

@IBAction func reminderSwitch(_ sender: UISwitch) {
    // to initiate smooth animation
    tableView.beginUpdates()
    tableView.endUpdates()
}

如果您有多个部分和更有趣的行要求,则显然可以向heightForRowAt函数添加更多逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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