Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Cocoa 文本字段的初始大小错误(NSTableView)_Cocoa_Autolayout_Nstableview_Nstableviewcell - Fatal编程技术网

Cocoa 文本字段的初始大小错误(NSTableView)

Cocoa 文本字段的初始大小错误(NSTableView),cocoa,autolayout,nstableview,nstableviewcell,Cocoa,Autolayout,Nstableview,Nstableviewcell,我有一个带有文本字段的NSTableView(基于视图)列。我使用的是autolayout和IB。窗口中的大多数视图都可以调整大小,尤其是表格。我将属性文本放入文本字段。如果应用程序开始时的表宽小于或等于TextField的宽度(如IB中所指定),那么一切都很正常。另一方面,如果表格最初显示得太宽,则文本字段太小,文本换行会留下大量左侧空间。调整表的大小会自动更正文本字段的宽度,直到应用程序重新启动 在tableView viewForTableColumn中,我得到了一个带有标准makeVie

我有一个带有
文本字段的
NSTableView
(基于视图)列。我使用的是autolayout和IB。窗口中的大多数视图都可以调整大小,尤其是表格。我将属性文本放入文本字段。如果应用程序开始时的表宽小于或等于TextField的宽度(如IB中所指定),那么一切都很正常。另一方面,如果表格最初显示得太宽,则文本字段太小,文本换行会留下大量左侧空间。调整表的大小会自动更正文本字段的宽度,直到应用程序重新启动

在tableView viewForTableColumn中,我得到了一个带有标准makeViewWithIdentifier的NSTableCellView。我试着把画框尺寸调大一些,但没有效果。帧与nib中的值相匹配(正如人们所期望的那样)。唯一的约束是在表格单元视图上,这迫使它随着表格大小的调整而增长和收缩,但只有在用户收缩表格宽度之后

保持桌子的带边框的滚动视图有什么问题吗?我将在何处强制NSTableCellView调整其宽度

用户手动调整大小之前:

调整大小后:


谢谢

tableview中单元格的宽度由tableColumn的宽度定义,即行高中相应的高度。您不能仅为特定单元格更改它。 滚动视图表格视图
它们一起使用,但有非常不同的任务。将tableview视为一张图片,显示在window=scrollview中。如果窗口的图片太大,可以使用卷轴使不可见部分可见。TableView通常太大…

在文档中查找“Cocoa提示和技巧”,这是一些示例项目,您可以找到一些带有“TableViewVariableRowHeights…”的文件。下载项目。在用于下载的your文件夹中,您可以找到a文件夹“TableViewVariableRowHeights”。所需的代码很容易找到。祝你好运。

谢谢@macrene提供的有用建议。我的大部分调试都指向一个有故障的nib,事实似乎确实如此

我不能说“我理解这个问题”,但我的应用程序正在运行。IB和在同一视图中有两个表似乎存在一些问题。我创建了一个只有一个表的测试用例应用程序,一切正常。但我注意到在IB中调整表的大小时有些“奇怪”。有时表会移到看不见的角落

我回到我的应用程序,在尝试将约束与我的测试用例匹配后删除了有问题的表,因为IB不允许我输入相同的约束。我不得不用尺寸检测仪来摆放桌子。我一直在清除所有的限制,并玩它。我终于有了进入的条件

层次结构是:

View Bordered Scroll View - Table View Clip View Table View Table Column Table Cell View (need constraints here) Text Field - Table View Cell (need constraints here) Text Field Cell - Text Cell 看法 带边框的滚动视图-表格视图 剪辑视图 表视图 表列 表格单元格视图(此处需要约束) 文本字段-表格视图单元格(此处需要约束) 文本字段单元格-文本单元格 我的猜测是,当同一视图中有两个表时,IB会感到困惑。通过鼠标调整桌子的大小和位置肯定有问题


我认为
自动重设密钥
也有一些问题。我试图通过编辑nib的xml版本来匹配这些设置。我错过了一些东西,最后失去了耐心。

我在同一个(窗口->)视图中使用了两个TableView,没有任何问题。重要的是,您有两个不同的连接器、数据源和阵列控制器(如果需要)。如果您的电视显示不同的内容,您甚至可以为每台电视创建不同的类

调整大小:使用tableView时,请注意,顶部有一个滚动视图。层次结构是 1.ScrollView(在窗口->视图或tableview(!)所在的任何视图中)。 1.1.表格视图(内部滚动视图) 在为这些视图设置自动缩放时,请注意IB Inspector。它们可以设置为inside=视图本身和outside view->superview。在a.sv b.tv中使用它-1.inside,2.outside,3.组合,在预览中观看红色插入符号。使用CMD r预览IB中的设置,然后更改窗口大小,检查,有什么更改,它是f通俗易懂


正如您可能已经看到的,您可以在IB中设置单元格宽度的约束。您可以在代码中更改该约束。

我也遇到了同样的问题


我的解决方案是使Size inspector中的表列
宽度
与表视图中的
宽度
相同,因为出于某种原因,在我的情况下,它比表视图小4磅。

我不清楚这一点。我希望所有单元格的宽度相同。问题是,在最初的演示中,单元格比tableColumn。一旦tableColumn的大小变小,单元格就会随着tableColumn的大小而增长和收缩。单元格开始时与tableColumn的宽度不匹配。据我所知,当第一次显示tableView时,文本单元格的宽度与表列的宽度不同步。手动调整大小后,它会工作。您设置代码中的单元格大小时,请检查。插入日志“NSLog”(@“methodname”)以了解何时调用该方法。在tableView收集所有信息(内容、格式等)时,必须调用该日志以正确的方式显示单元格。这里的一些代码有助于分析…我遇到了完全相同的问题!令人沮丧的是,它在调整大小后可以完美地工作。您的解决方案只是重新创建xib文件吗?