在向下滚动时,Swift Expandable tableView单元格按钮不显示。

问题描述 投票:0回答:1

当我的自定义单元格在展开状态下滚动到屏幕外时,按钮被隐藏了,而这是不应该的。在标签下面,当再次向上滚动时,2个按钮没有出现。我猜测需要在单元格被删除后发生一些事情。任何帮助都将是非常感激的。

enter image description here

我有一个自定义单元格,最初一行的高度是80,当点击单元格时,它扩展到120。默认情况下,我将按钮隐藏起来,就像这样。

    @IBOutlet weak var followButton: UIButton! {
        didSet {
            followButton.isHidden = true
        }
    }

    @IBOutlet weak var blockButton: UIButton! {
        didSet {
            blockButton.isHidden = true
        }
    }

我有一个... var expandedIndexSet : IndexSet = [] 下面的方法相应地更新indexSet。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
        tableView.beginUpdates()
        let cell = tableView.cellForRow(at: indexPath) as! StackOverflowTableViewCell

        if(expandedIndexSet.contains(indexPath.row)){
            expandedIndexSet.remove(indexPath.row)
        } else {
            expandedIndexSet.insert(indexPath.row)
        }

        cell.blockButton.isHidden = !cell.blockButton.isHidden
        cell.followButton.isHidden = !cell.followButton.isHidden

        tableView.endUpdates()
    }

高度是这样调整的。

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if expandedIndexSet.contains(indexPath.row) {
            return 140
        }
        else {
            return 80
        }
    }

ios swift uitableview tableview
1个回答
0
投票

下面的代码段可能会有帮助,请试一试。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = ....

         cell.followButton.isHidden = !expandedIndexSet.contains(indexPath.row)
         cell.blockButton.isHidden = cell.followButton.isHidden

         return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)

        // Update View Model
        if(expandedIndexSet.contains(indexPath.row)){
            expandedIndexSet.remove(indexPath.row)
        } else {
            expandedIndexSet.insert(indexPath.row)
        }

        // Table View Animation
        tableView.beginUpdates()
        tableView.reloadRows(at: indexPaths, with: .automatic)
        tableView.endUpdates()
}
© www.soinside.com 2019 - 2024. All rights reserved.