Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 具有可变行高和自定义单元格的macOS cocoa TableView_Xcode_Macos_Cocoa_Tableview_Swift4 - Fatal编程技术网

Xcode 具有可变行高和自定义单元格的macOS cocoa TableView

Xcode 具有可变行高和自定义单元格的macOS cocoa TableView,xcode,macos,cocoa,tableview,swift4,Xcode,Macos,Cocoa,Tableview,Swift4,形势 我想在macOS Cocoa应用程序中创建一个新闻文章表。(见下图) 每个单元格由两个标签组成。一个用于标题,一个用于主要内容 问题 现在,新闻主体的长度和整个TableView的宽度是可变的。我希望根据每行/单元格中标签的大小,在每行/单元格上设置一个可变高度 我们尝试过的 我们尝试了以下方法: 我们有一个 桌面视图 -> TableColumn -> Custom View -> LabelHeader -> LabelBody TableV

形势 我想在macOS Cocoa应用程序中创建一个新闻文章表。(见下图) 每个单元格由两个标签组成。一个用于标题,一个用于主要内容

问题 现在,新闻主体的长度和整个TableView的宽度是可变的。我希望根据每行/单元格中标签的大小,在每行/单元格上设置一个可变高度

我们尝试过的 我们尝试了以下方法: 我们有一个 桌面视图

 -> TableColumn
  -> Custom View
   -> LabelHeader
   -> LabelBody
TableView上的RowSizeStyle属性设置为“自动”

这些单元格由自定义类填充。基本上,我们试图实现这个StackOverflow解决方案:->这对我们来说不起作用

(还有更多我们无法运行的解决方案)

问题 有人能为这个问题提供一个实用的教程或解决方案吗?或者至少是一个有希望的方法

PS我在macOS 10.13.5上使用XCode 9.4.1和Swift 4

非常感谢您的帮助,谢谢


在现代cocoa应用程序中,可以使用NSLayoutConstraint实现表格视图单元格的动态高度。棘手的部分是获取可以设置约束高度的文本高度。这可以通过使用NSTextView而不是NSTextField并向布局管理器询问当前高度来完成

NSRect usedRect = [[textView layoutManager] usedRectForTextContainer:[self textContainer]];
float newHeight = usedRect.size.height;

几年前,我在objective c应用程序中使用了此选项,因此如果您还有其他问题,请告诉我

非常感谢您的回答!我会尝试你的建议,可能会带着问题回来。谢谢你,马克!通过您的帮助和这篇Stackoverflow文章,我们成功了: