我正在 Mac OS X 10.6 (Snow Leopard) 中进行开发。当我在 NSTableView 的两个列标题之间双击时,左侧的列会自动调整大小,就像您所期望的那样。
我也想在上下文菜单中提供此功能,但似乎没有可公开访问的功能来执行此操作。我用 Google 搜索并查看了 NSTableView、NSTableHeaderView 和 NSTableColumn 的文档,但什么也没找到。我很难相信他们不会公开一些如此有用的东西,因为他们显然已经编写了代码来做到这一点。
我看到了-[NSTableColumn sizeToFit]
方法,但这只考虑了标头的大小。我还决定将双击事件发送到 NSTableHeaderView,但也不知道如何做到这一点。
Update- 我意识到重要的是要提到我有一个 NSArrayController (子类)向我的表提供数据,所以我没有NSTableViewDataSource
我可以打电话给-[tableView: objectValueForTableColumn: row:]
。这就是问题的关键:每一列都绑定到数组控制器的键路径,这就是它获取数据的方式,因此它无法循环遍历其内容。
您可以通过从列中获取单元格来获取每个单元格的长度。
NSCell myCell = [column dataCellForRow:i];
然后获取单元格的宽度。
width = [myCell cellSize].width;
之后,您可以将单元格的宽度设置为列的宽度。
[column setMinWidth:width];
[column setWidth:width];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)