Macos 如何在调整列大小后使用useSaumaticRowHeights=true更新NSTableView的行高?

Macos 如何在调整列大小后使用useSaumaticRowHeights=true更新NSTableView的行高?,macos,autolayout,nstableview,Macos,Autolayout,Nstableview,由于macOS 10.13的新属性useAutomaticRowHeights以及自动布局,我们可以使用具有自动行高的NSTableView。这很有效 但是,当用户调整列的大小时,计算的高度不再正确,表格视图单元格中会出现间隙 在这种情况下,是否有经过验证的方法在调整列大小后更新行高 我已经尝试过类似于subtreeIfNeed()的updateConstraints(),updateConstraints(),setNeedsDisplay(),reloadData()等方法,但都不起作用 对

由于macOS 10.13的新属性
useAutomaticRowHeights
以及自动布局,我们可以使用具有自动行高的NSTableView。这很有效

但是,当用户调整列的大小时,计算的高度不再正确,表格视图单元格中会出现间隙

在这种情况下,是否有经过验证的方法在调整列大小后更新行高


我已经尝试过类似于subtreeIfNeed()的
updateConstraints()
updateConstraints()
setNeedsDisplay()
reloadData()
等方法,但都不起作用

对我有效的方法是在NSTableviewDelegate中包含
tableViewColumnDidResize
通知方法。在那里,您可以调用表视图的
notehightofrows
方法。下面是一个实现:

   //Recalculate when the screen moves
   func tableViewColumnDidResize(_ notification: Notification) {
     let allIndex = IndexSet(integersIn:0..<self.YOURTABLE.numberOfRows)
    YOURTABLE.noteHeightOfRows(withIndexesChanged: allIndex)
}
//屏幕移动时重新计算
func tableViewColumnDidResize(uu通知:通知){

让allIndex=IndexSet(integersIn:0..如果在设计中使用NSTextField,请确保每个具有动态高度的NSTextField的
所需宽度
设置设置为
自动
。此设置位于尺寸检查器中


更改此选项会导致自动重新计算tableview行高。

谢谢,但不幸的是,这在我的代码中不起作用。是否使用
usesAutomaticRowHeights=true
?我已将行大小样式设置为“自动(自动布局)”通过Interface Builder。当你说它不工作时,你是说它没有被调用,还是被调用时它什么也不做?它被调用了,但行的高度保持不变。我所有的其他尝试也在同一个tableViewColumnDidResize委托中。你是否也实现了
heightOfRow
委托?如果是,当您删除此委托时,您的代码是否仍然有效?是的,我还实现了
HeightOfRow
,如果我删除此委托,它将不起作用。我在那里做的是创建和配置视图,并调用
layoutSubtreeIfNeeded
。然后,我返回视图的高度。@Ely我可以在没有
h的情况下使其工作八行
tableViewColumnDidResize
,我遵循了[并确保布局约束、拥抱和压缩足够大]