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

时间:2014-03-05 05:39:48

标签: cocoa autolayout nstableview nstableviewcell

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

在tableView中查看viewForTableColumn我得到一个带有标准makeViewWithIdentifier的NSTableCellView。我试图强制框架尺寸更大,但这没有任何影响。框架与笔尖的值匹配(正如人们所期望的那样)。唯一的限制是在表格单元格视图上,这会强制它随着表格大小调整而增长和缩小,但仅在用户缩小表格宽度之后才会增长和缩小。

带有滚动滚动视图的内容是否存在?我会在哪里强制NSTableCellView协调其宽度?

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

调整大小后: after user resizes

谢谢...

5 个答案:

答案 0 :(得分:0)

tableview中单元格的宽度由tableColumn的宽度定义,tableColumn是行高度中各自的高度。您不能仅为特定单元格更改它。 Scrollview< - >泰伯维 它们一起使用,但具有非常不同的任务。将tableview视为图片,显示在window = scrollview中。如果窗口的图片很大,您可以使用滚动条使可见部分可见。表格视图通常很大......

答案 1 :(得分:0)

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

答案 2 :(得分:0)

感谢@macrene提供有用的建议。我的大多数调试都指向一个有缺陷的笔尖,事实上确实如此。

我不能说"我理解问题",但我的申请正在运作。 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会感到困惑。通过鼠标调整表格的大小和位置肯定存在问题。

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

答案 3 :(得分:0)

我在同一个(window->)视图中使用两个tableViews没有任何问题。重要的是,您有两个不同的连接器,数据源和 - 如果需要 - 阵列控制器。如果您的电视节目内容不同,您甚至可以为每部电视创建不同的课程。

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

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

答案 4 :(得分:0)

我也遇到了同样的问题。

我的解决方案是让尺寸检查器中的表格列Width与表格视图的Width相同,因为由于某种原因,它比较小4pt就我而言。