3

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

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

保存表格的边框滚动视图有什么问题吗?我将在哪里强制 NSTableCellView 协调其宽度?

在用户手动调整大小之前: 在用户调整大小之前

调整大小后: 用户调整大小后

谢谢...

4

6 回答 6

0

感谢@macrene 提供有用的建议。我的大部分调试都一直指向一个有问题的笔尖,这似乎确实是这样。

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

在尝试将约束与我的测试用例匹配后,我回到我的应用程序并删除了有问题的表,因为 IB 不允许我输入相同的约束。我不得不使用尺寸检查器放置桌子。我一直在清除所有限制并玩弄它。我终于以某种方式获得了进入的约束。

层次结构是:

看法
  有边框的滚动视图 - 表格视图
    剪辑视图
      表视图
        表列
          表格单元格视图(此处需要约束)
            文本字段 - 表格视图单元格(此处需要约束)
            文本字段单元格 - 文本单元格

我的猜测是,当同一视图中有两个表时,IB 会感到困惑。通过鼠标调整表格的大小和位置肯定有问题。

我认为也存在一些问题autoresizingMask。我试图通过编辑笔尖的 xml 版本来匹配这些设置。我错过了一些东西,最后失去了耐心。

于 2014-03-06T23:27:12.613 回答
0

在文档中查找“Cocoa Tips and Tricks”,这是一些示例项目,您会发现一些带有“TableViewVariableRowHeights...”的文件。下载项目。在用于下载的文件夹中,您可以找到文件夹“TableViewVariableRowHeights”。所需的代码很容易找到。祝你好运。

于 2014-03-06T17:30:43.340 回答
0

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

调整大小:使用 tableView 时,请注意,顶部有一个滚动视图。层次结构是 1. ScrollView(在 window->view 内,或者 tableview(!) 位于的任何视图内。1.1. TableView(在 scrollView 内。)为这些视图设置自动调整大小时请注意 IB-Inspector。它们可以设置为 inside = 查看自身和外部 view->superview。用它来播放 a.sv b.tv -1. inside, 2. outside, 3. combined, 在预览中观看红色插入符号。使用 CMD r 预览IB中的设置,然后改变窗口的大小,检查,有什么变化,这很容易理解。

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

于 2014-03-07T17:48:31.777 回答
0

表格视图中单元格的宽度由 tableColumn 的宽度、行高各自的高度定义。您不能仅针对特定单元格更改它。Scrollview <-> Tableview 它们是一起使用的,但是有非常不同的任务。将 tableview 视为图片,显示在 window = scrollview 中。如果图片对于窗口来说太大了,您可以使用卷轴使不可见的部分可见。表格视图通常很大...

于 2014-03-05T10:11:45.407 回答
0

刚刚遇到了与 XCode 12.5 类似的问题。使用早期版本的 Xcode 构建的 xib 中的 NSTableView 中的单元格在对 xib 进行任何修改后开始仅填充~1/2 的列宽,即使更改与 NSTableView 没有任何远程关系. 工作 xib 和稍加修改的 xib 之间的差异(仅将另一个控件的一个维度更改了 1 个像素)显示整个文档有 27 个更改,其中大部分是整个 xib 的轻微像素更改。再多的对约束的烦躁也无法解决这个问题。幸运的是,我碰巧发现,当使用更高版本的 XCode 修改 xib 时,属性面板中的 TableView 的“样式”已更改为“自动”。将样式更改为“全宽”会使单元格填充整列。

于 2022-01-06T18:57:17.843 回答
0

我也面临同样的问题。

对我来说,解决方案是使尺寸检查Width器中的表格列与表格视图的相同,因为出于某种原因,在我的情况下它小了 4pt。Width

于 2018-03-08T14:50:12.933 回答