Swift 将NSOutlineView或NSTableView单元格高度调整为中的自定义视图
我有一个Swift 将NSOutlineView或NSTableView单元格高度调整为中的自定义视图,swift,autolayout,swiftui,nstableview,nsoutlineview,Swift,Autolayout,Swiftui,Nstableview,Nsoutlineview,我有一个NSOutlineView视图,该视图使用自定义SwiftUI视图作为其单元格: func-outlineView(\outlineView:NSOutlineView,viewFor-tableColumn:NSTableColumn?,项目:Any)->NSView?{ guard tableColumn?.identifier.rawValue==“正确的id”else{return} guard let myItem=项目为?MyType else{return} 返回NSHos
NSOutlineView
视图,该视图使用自定义SwiftUI视图作为其单元格:
func-outlineView(\outlineView:NSOutlineView,viewFor-tableColumn:NSTableColumn?,项目:Any)->NSView?{
guard tableColumn?.identifier.rawValue==“正确的id”else{return}
guard let myItem=项目为?MyType else{return}
返回NSHostingView(rootView:myswituiview(someProperty:myItem))
}
自定义视图的高度可以更改,因此我想找到一种方法来动态调整NSOutlineView
单元格的高度,使其与托管在其中的自定义视图相匹配。到目前为止,我只在NSOutlineViewDelegate
中找到了这个函数,它允许我设置行的高度:
func大纲视图(\outlineView:NSOutlineView,rowByItem项目的高度:任意)->CGFloat
但是,我只能基于项设置行的高度,而不能基于自定义视图
我是否可以直接访问每个单元格/行,并将其高度设置为自定义视图的高度?根据您编写的代码,您已经知道正在为项目创建什么视图(myswituiview)。您应该能够返回该视图的默认高度。@RichardSmall您的意思是为项目
重新创建myswitUIView
实例,然后读取其高度?如果视图是一个可以工作的恒定高度,或者将您创建的视图也存储在项目本身中。可能使用弱引用来避免保留周期。根据您编写的代码,您已经知道正在为项目创建什么视图(myswiftuiew)。您应该能够返回该视图的默认高度。@RichardSmall您的意思是为项目
重新创建myswitUIView
实例,然后读取其高度?如果视图是一个可以工作的恒定高度,或者将您创建的视图也存储在项目本身中。可能使用弱引用以避免保留循环。