【发布时间】:2017-02-11 16:13:15
【问题描述】:
这就是我所说的“关闭底部边框”的意思:
第二行当前处于“隐藏”状态(其高度设置为 0)。当用户单击第一行时,会出现第二行(其高度已恢复)。如果有帮助,这里是隐藏和显示第二行的代码。
首先,我有一个成员变量,用于存储第二行是否打开(它是带有选择器视图的行):
var referenceLengthPickerIsOpen: Bool = false
以下是确定高度的方法:
override func tableView(_ tableView: UITableView,
heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 0 && indexPath.row == 1 {
return referenceLengthPickerIsOpen ? 216.0 : 0.0
}
return super.tableView(tableView, heightForRowAt: indexPath)
}
以下是用户单击第一行以显示或隐藏第二行时的处理代码:
override func tableView(_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath) {
self.tableView.deselectRow(at: indexPath, animated: true)
if indexPath.section == 0 && indexPath.row == 0 {
referenceLengthPickerIsOpen = !referenceLengthPickerIsOpen
tableView.beginUpdates()
tableView.endUpdates()
}
}
显示和隐藏部分效果很好,当第二行的高度从 0 变为 216 时,动画效果很好,反之亦然。
但是,在隐藏第二行之后,我留下了上图所示的边框间隙。我知道原因:底部边框只对最后一行关闭,目前是隐藏的。
我试图通过改变这样的行数来解决这个问题:
override func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return referenceLengthPickerIsOpen ? 2 : 1;
}
return super.tableView(tableView, numberOfRowsInSection: section)
}
但这只会在我点击第一行时让我的应用崩溃。
【问题讨论】:
-
我相信底部边框可能是
UITableView分隔线。如果不是,请告诉我。 -
这一行
referenceLengthPickerIsOpen ? 2 : 1应该可以正常工作。你能把崩溃报告给我看一下吗?
标签: ios swift uitableview uipickerview