簡體   English   中英

使用Swift隱藏隱藏的靜態表格視圖單元格

[英]Hide unhide Static Table View Cells with Swift

我試圖用一些可擴展和折疊的單元格制作一個“靜態表”。 我重寫了''':WithAnimation :)'''應該為動畫過渡提供了一些控制。 不幸的是,返回的單元格是空白的,我並不是說是空的,但是單元格消失了,它們的位置在表中是空白的。 當我嘗試使用'''reloadSections()'''時,整個部分也將返回空白。 經過一番嘗試之后,我開始懷疑'''reloadRowAtIndexPath(:WithAnimation :)'''和'''reloadSections()'''與與數據源關聯的表一起使用。 我對嗎? 如果是,如何控制要隱藏/取消隱藏的單元的動畫,以使過渡平滑? 謝謝(編輯)

要獲得平滑的動畫,只需使用以下命令重新加載tableView

tableView.beginUpdates()
tableView.endUpdates()

這將自動調用heightForRowAtIndexPath並呈現平滑過渡。

擴大irkinosor的答案。 在此示例中,我有1個部分,包含3個靜態行。 最初加載tableView時,我的UISwitch已關閉,我只希望第一行(行0)可見(隱藏1,2行)。 當UISwitch打開時,我想顯示(第1,2行)。 另外,我希望具有隱藏或顯示行手風琴的平滑動畫。

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    if indexPath.row > 0 && toggleSwitch.isOn == false {
        return 0.0  // collapsed
    }
    // expanded with row height of parent
    return super.tableView(tableView, heightForRowAt: indexPath)
}

在我的切換操作中,我啟動tableView刷新

@IBAction func reminderSwitch(_ sender: UISwitch) {
    // to initiate smooth animation
    tableView.beginUpdates()
    tableView.endUpdates()
}

如果您有多個部分和更有趣的行要求,則顯然可以向heightForRowAt函數添加更多邏輯。

暫無
暫無

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

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