在我的应用程序中,我有UITableView
自定义XIB单元格,当用户单击单元格应展开并显示内容的任何单元格时,如果再次单击它,则单元格应最小化。
我的问题是,如果之前有任何扩展的单元格,并且用户单击另一个单元格,则应首先最小化第一个单元格,然后此单元格将被扩展。
我正在使用:tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
但它不起作用。 以前有人遇到这样的问题吗?
我会非常感谢任何帮助。
答案 0 :(得分:2)
您可以尝试以下步骤:
定义
var expandHeight: CGFloat = 100
var normalHeight: CGFloat = 50.0
var currentSelected = 0
在
中使用它们override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == currentSelected {
return expandHeight
}
else {
return normalHeight
}
}
在
中调用它 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.beginUpdates()
currentSelected = indexPath.row
tableView.endUpdates()
}
答案 1 :(得分:0)
在didSelectRowAtIndexpath:UITableView上的委托方法中编写以下算法。
1)检查是否已经扩展了任何单元格?(可以通过维护indexPath属性变量进行检查,这有助于再次获取该单元格以使用cellForRowAtIndexpath执行任何操作:)。
2)如果是,则将tableview的单元格高度设置为默认值,例如44.0,否则不执行任何操作。
3)然后在所选单元格上应用展开的单元格函数(扩展单元格的方法),并使用新选择的单元格的indexPath更新indexPath属性。