ios - UITableViewCell 自定义类 - subview 高度约束更改后重新加载单元格高度

标签 ios swift uitableview

我在自定义 UITableViewCell 类中有一个按钮。它显示/隐藏 View (同一单元格的一部分)。这样做时单元格的高度应该改变。
这是按钮操作(在 UITableViewCell 自定义类中):

@IBAction func showHideCartView(sender: UIButton)
    {
        if sender.tag == 1
        {
            // Show cart view
            self.buttonArrow.tag = 2
            self.viewAddToCart.isHidden = false
            self.constraint_Height_viewAddToCart.constant = 50
            self.buttonArrow.setImage(UIImage(named: "arrowUp.png"), for: .normal)
        }
        else
        {
            // Hide cart view
            self.buttonArrow.tag = 1
            self.viewAddToCart.isHidden = true
            self.constraint_Height_viewAddToCart.constant = 0
            self.buttonArrow.setImage(UIImage(named: "arrowDown.png"), for: .normal)
        }

        self.setNeedsUpdateConstraints()
        self.setNeedsLayout()
        self.layoutIfNeeded()
    }  

单元格的高度保持不变。只有当我滚动 UITableView 并重新访问单元格时,它的高度才会更新。

最佳答案

将以下方法添加到带有 tableViewviewController 以在展开单元格时刷新表格:

func refreshTableAfterCellExpansion() {
    self.tableView.beginUpdates()
    self.tableView.setNeedsDisplay()
    self.tableView.endUpdates()
}

约束更新后调用该方法。如果按钮操纵单元格内的约束,则需要将更改通知 viewController 以便调用该方法。使用委托(delegate)模式(或直接将 tableView 引用传递给每个可扩展单元格 - 只需记住将其存储为 weak 变量),或使用 NotificationCenter 发布通知.默认

关于ios - UITableViewCell 自定义类 - subview 高度约束更改后重新加载单元格高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46583353/

相关文章:

ios - tzID GMT-8 是否有时区名称

ios - 与 HealthKit 相关的 info.plist key 令人困惑的问题 - Apple

ios - 如何将 NSCoder 与版本化类一起使用

swift - 如何通过访问 RxSwift 中的最新值来模拟计算属性?

ios - DispatchQueue.global(qos : . default) 在后台或锁屏时继续,如何暂停?

iphone - tableViewCell 中的 UITapgestureRecogniser

ios - UIGestureRecognizer 的闭包

ios - 如何在 swift 4 中使用 json 对象发送 json 数据

ios - 下载图像时调整 UITableViewCell 高度

ios - 将 subview 添加到 self.tableView.tableHeaderView 不起作用