【发布时间】:2016-06-10 00:22:33
【问题描述】:
我有一个启用了多选的 UITableView。我一直在使用“选择”来实际更改行的高度,在“选择”时显示额外的细节。例如
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return (self.tableView.indexPathsForSelectedRows?.contains(indexPath) ?? false) ? 200 : 92
}
这似乎工作得很好。直到我开始做任何滑动动作。当我添加一些滑动动作时,滑动动作似乎清除了我所有的选择。我实际上想取消选择我正在滑动的那个,所以它会缩小。但是清除我所有的选择似乎不会触发任何正常的委托回调。即使我将 allowsMultipleSelectionDuringEditing 设置为 true。
有没有办法做到这一点?我应该跳过(ab)使用选择状态来指示该行是否显示具有不同高度的细节吗?或者有没有办法将它与在“编辑模式”下完成的滑动行为结合使用并清除我的所有选择?
【问题讨论】:
-
如果您想要一些信用@sticker,请回答。我最终大部分都是这样做的,而且效果很好。底线是,不要滥用选择状态。
-
按照你的建议移动:)
标签: ios uitableview