Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Swift隐藏取消隐藏静态表格视图单元格_Ios_Uitableview_Swift2 - Fatal编程技术网

Ios 使用Swift隐藏取消隐藏静态表格视图单元格

Ios 使用Swift隐藏取消隐藏静态表格视图单元格,ios,uitableview,swift2,Ios,Uitableview,Swift2,我试图用一些可扩展和可折叠的单元格创建一个“静态表”。我重写了“”:WithAnimation:)“”,它应该为我提供一些对动画转换的控制。不幸的是,返回的单元格是空白的,我不是说空的,但是单元格已经消失了,它们的位置留在了表格中的blanc。当我尝试使用''reloadSections()''时,整个部分也返回空白。经过一番重新整理,我开始怀疑“重新加载rowatindexpath”(​: WithAnimation:)''和''reloadSections()''使用与数据源关联的表。 我说

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

要获得平滑的动画,只需使用

tableView.beginUpdates()
tableView.endUpdates()

这将自动调用heightForRowAtIndexPath并渲染平滑过渡

要获得平滑的动画,只需使用

tableView.beginUpdates()
tableView.endUpdates()

这将自动调用heightForRowAtIndexPath并渲染平滑过渡

来扩展irkinosor的答案。在本例中,我有一个包含3个静态行的部分。最初加载tableView时,我的UI开关处于关闭状态,我只希望第一行(第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函数添加更多逻辑。

来扩展irkinosor的答案。在本例中,我有一个包含3个静态行的部分。最初加载tableView时,我的UI开关处于关闭状态,我只希望第一行(第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函数添加更多逻辑。

如何隐藏单元格?我们不能太多地使用静态表视图,相反,我建议您使用prototype table view,然后您可以使用deleteRowsAtIndexPaths和insertRowsAtIndexPaths以及所需的动画。谢谢,但我必须使用静态表来实现我的应用程序。您可以提供用于隐藏和显示单元格的代码吗?您可以找到此问题的完整答案这里:您将如何隐藏手机?我们不能太多地使用静态表视图,相反,我建议您使用prototype table view,然后您可以使用deleteRowsAtIndexPaths和insertRowsAtIndexPaths以及所需的动画。谢谢,但我必须使用静态表来实现我的应用程序。您可以提供用于隐藏和显示单元格的代码吗?您可以找到此问题的完整答案在这里: