Ios UITableViewCell自定义类-更改子视图高度约束后重新加载单元格高度

Ios UITableViewCell自定义类-更改子视图高度约束后重新加载单元格高度,ios,swift,uitableview,Ios,Swift,Uitableview,我在customUITableViewCell类中有一个按钮。它显示/隐藏视图(同一单元格的一部分)。进行此操作时,单元格的高度应发生变化。 这是按钮操作(在UITableViewCellcustom类中): 单元格的高度保持不变。只有当我滚动UITableView并重新访问单元格时,它的高度才会更新。由于此代码位于TableViewCell中,您需要在TableViewController中为您的单元格创建一个操作方法,以便在单击按钮时您会知道。您可以在TableView单元格中保留按钮的引用

我在custom
UITableViewCell
类中有一个按钮。它显示/隐藏视图(同一单元格的一部分)。进行此操作时,单元格的高度应发生变化。
这是按钮操作(在
UITableViewCell
custom类中):


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

由于此代码位于TableViewCell中,您需要在TableViewController中为您的单元格创建一个操作方法,以便在单击按钮时您会知道。您可以在TableView单元格中保留按钮的引用,然后在单元格中保留按钮的引用

cell.yourButtonRef.addTarget(self, action: #selector(expandButtonTapped(_:)), for: .touchDown)
然后创建一个名为“expandButtonTapped”的函数,并在其中添加tableview和end update

@objc func expandButtonTapped(_ button: UIButton) {
    self.tableView.beginUpdates() 
    self.tableView.endUpdates()


}

请让我知道这是否有效

因为此代码在TableViewCell中,您需要在TableViewController中为您的单元格创建一个操作方法,以便在单击按钮时知道。您可以在TableView单元格中保留按钮的引用,然后在单元格中保留按钮的引用

cell.yourButtonRef.addTarget(self, action: #selector(expandButtonTapped(_:)), for: .touchDown)
然后创建一个名为“expandButtonTapped”的函数,并在其中添加tableview和end update

@objc func expandButtonTapped(_ button: UIButton) {
    self.tableView.beginUpdates() 
    self.tableView.endUpdates()


}

请让我知道这是否有效

使用
tableView
将以下方法添加到
viewController
,以便在单元格展开时刷新表格:

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

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

使用
tableView
将以下方法添加到
viewController
,以在单元格展开时刷新表:

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

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

我实现了一些与您非常类似的功能,但我所要做的只是“self.tableView.beginUpdate()self.tableView.endUpdates())“.请给我一个try@Siyavash:我已经在UITableViewCell自定义类中编写了上述内容。哦,这可能就是为什么,我将编写一个可能的solution@Siyavash:在UITableViewCell类中也很容易做到这一点。但是在你“滚动UITableView并重新访问单元格”之前,“单元格高度保持不变”的原因可能是因为你的tableview仍在使用旧的单元格。我实现了一些与你非常相似的功能,但我所要做的就是“self.tableview.beginUpdate()self.tableView.endUpdates()。请给我打个电话try@Siyavash:我已经在UITableViewCell自定义类中编写了上述内容。哦,这可能就是为什么,我将编写一个可能的solution@Siyavash:在UITableViewCell类中也很容易做到这一点。但我担心这样做是否正确。但在“滚动UITableView并重新访问单元格”之前,“单元格高度保持不变”的原因可能是因为tableview仍在使用旧单元格