我怎样才能让NSTableView的唯一列占据TableView的所有宽度?

tsi*_*lar 41 cocoa interface-builder nstableview xcode4

我目前正在尝试学习一些Cocoa(使用Cocoa Programming for Mac OS X).在其中一个练习中,我们设置了一个只有一列的NSTableView,作为一个列表.

令我恼火的是,在Interface Builder中,我找不到让(唯一)列始终占用NSTableView的全宽度的方法.因此,当实际上只有一列时,总会看起来有两列.

任何的想法 ?

The*_*mer 52

这只是一个始终发生的IB问题(我不确定为什么).要解决此问题,只需将表视图的大小调整为小于第2列的大小,然后将其拖回到所需的大小,第2列将消失.

  • 这在XCode 6.1,OSX 10.10中仍然有效.过去两天让我陷入了地狱. (3认同)
  • 而且还没有修复,这个答案现在差不多4年了 (2认同)
  • 哈哈简直不敢相信我5年前回答过这个问题,这个问题在Xcode中仍然存在.老实说,在更改列数时,表视图会自动重绘. (2认同)

sam*_*sam 31

这是我在Xcode 4.6中的表现...

在IB中,选择表视图并转到"属性"检查器.选择'Uniform'作为'Column Sizing'.然后,选择表格列并选择"使用表格自动调整大小"以进行"调整大小".

这些选项对应于:

[tableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[tableColumn setResizingMask:NSTableColumnAutoresizingMask];
Run Code Online (Sandbox Code Playgroud)

  • 您也可以尝试 [tableView sizeLastColumnToFit]; (2认同)

Tom*_*sen 11

我不得不使用这两个步骤 - 山姆的回答+大卫道格拉斯的评论.

[tableView  setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[tableColumn setResizingMask:NSTableColumnAutoresizingMask];

 //AND 
 [tableView sizeLastColumnToFit];
Run Code Online (Sandbox Code Playgroud)