下面是我所說的「關閉底部邊框」的意思是:在UITableView中,如何在隱藏行之後關閉行的底部邊界?
第二行是目前「隱藏」(其高度設置爲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'分隔線。請讓我知道,如果不是。 – KrishnaCA
這行'referenceLengthPickerIsOpen? 2:1'應該正常工作。你能告訴我崩潰報告,以便我可以研究它嗎? – KrishnaCA