2016-03-05 134 views
0

我正在尝试使用一些可展开和折叠的单元格创建'''静态表格'''。我重写了''':WithAnimation :)''',它应该为我提供一些对动画转换的控制。不幸的是,返回的单元格是空白的,我并不意味着空单元格,但单元格已经消失,并且它们的位置在表格中留下了空白。当我尝试使用'''reloadSections()'''时,整个部分也返回空白。经过一番研究之后,我开始怀疑'''reloadRowAtIndexPath(:WithAnimation :)'''和'''reloadSections()'''与关联数据源的表一起使用。 我对不对?如果是的话,我该如何控制我想要隐藏/取消隐藏的单元格的动画,以便过渡平滑? 谢谢(编辑)隐藏取消隐藏使用Swift静态表格视图单元格

+0

你如何隐藏细胞?我们不能使用静态表格视图,而是建议您使用原型表格视图,然后可以使用deleteRowsAtIndexPaths和insertRowsAtIndexPaths以及所需的动画。 –

+0

谢谢,但我必须为我的应用程序使用静态表 – irkinosor

+0

您能否提供您用于隐藏和显示单元格的代码? –

回答

1

要获得流畅的动画效果,只需重新加载的tableView与

tableView.beginUpdates() 
tableView.endUpdates() 

这会自动调用heightForRowAtIndexPath并呈现平稳过渡。

0

扩大irkinosor的答案。在这个例子中,我有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功能,如果你有多个部分,更有趣行的要求。

相关问题