簡體   English   中英

在不使用額外單元格的情況下擴展TableViewCell

[英]Expand TableViewCell without using an extra cell

我正在使用帶有自定義單元格的UITableView 每個單元都有自己的nib文件和一個控制器。 在一個單元格中,我要允許用戶選擇日期。 默認日期顯示在單元格上。 當用戶單擊單元格時, UIPickerView應在該單元格上展開。 我在論壇上發現了多個類似的問題,但所有問題都使用一個包含UIPickerView的額外單元格。 在我的應用中,我需要使用一個包含標簽和Pickerview的筆尖文件。 也許當單擊單元格時,我應該顯示pickerView並更新單元格的高度,當再次單擊該單元格時,我應該將其隱藏並再次更新高度。 我在某個地方看到了一個示例,但是它是用Objective-C編寫的。 您是否認為可以以這種方式實現它,並且有一個Swift示例嗎?

好了,要解決該問題,您只需要在單元格視圖中在標簽和選擇器之間設置固定的垂直間距即可。 看這個截圖

固定垂直間距

然后,每次用戶點擊單元格時,您只需重新加載具有已更新單元格高度的表格視圖。 這是源代碼:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

fileprivate var cellExpanded = false

// MARK: - UITableView datasource & delegate

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "PickerCell")!

    return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return (cellExpanded) ? 260:44
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    cellExpanded = !cellExpanded
    tableView.reloadData()
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM