【发布时间】:2015-10-27 09:11:10
【问题描述】:
我试图在点击时展开一个表格视图单元格。然后,当它再次被点击时,我希望它恢复到原来的状态。
如果单元格A 展开并点击单元格B,我希望单元格A 收缩和单元格B 同时展开。因此,在任何给定时刻,只有一个单元格可以处于展开状态。
我当前的代码:
class MasterViewController: UITableViewController {
var isCellTapped = false
var currentRow = -1
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedRowIndex = indexPath
tableView.beginUpdates()
tableView.endUpdates()
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == selectedRowIndex.row {
if isCellTapped == false {
isCellTapped = true
return 140
} else if isCellTapped == true {
isCellTapped = false
return 70
}
}
return 70
}
当前代码在以下情况下运行良好:
- 点击一行(它会展开)
- 你再次点击它(它会收缩)
在以下情况下失败:
- 点击一行(它会展开)
- 您点击另一行(它会收缩,但另一行不会展开)
我该如何解决这个问题?
【问题讨论】:
-
你想达到什么目的?使用
UITableView? 的手风琴菜单(下拉菜单) -
是的@VictorSigler,类似的东西。你认为使用 UITableView 可以做到吗?或者还有其他更适合该任务的类吗?
-
是的,你可以@Diego 看到我的答案。
-
@VictorSigler 我真正需要的一件事是“扩展”状态在任何给定时刻仅是一个单元格的属性。如果 cellA 展开而 cellB 被点击,则 cellA 必须收缩而 cellB 展开。
-
您可以毫无问题地做到这一点,请参阅我更新的答案,但我强烈建议您查看我的 repo 以了解更多关于使用
UITableView的手风琴菜单的信息
标签: swift uitableview