我在自定义 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 并重新访问单元格时,它的高度才会更新。
最佳答案
将以下方法添加到带有 tableView
的 viewController
以在展开单元格时刷新表格:
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/