在NSWindow手动调整大小之前,NSTableView不会布局/调整列大小

时间:2014-01-02 19:41:22

标签: objective-c cocoa nstableview appkit

我有一个带有几个NSTableColumn对象的NSTableView,它们似乎设置了所有正确的自动调整大小标志。但是,每次重建表的内容时,列都会返回一个较小的大小 - 除非我单击并手动调整窗口大小。

NSTableView在里面:

NSWindow    的NSView       NSScrollView          NSTableView的             (其他NSTableView对象:NSTableColumn,NSTextFieldCell,NSScroller(x 2)

列大小调整掩码始终为:

NSTableColumnAutoresizingMask
NSTableColumnUserResizingMask

创建的表始终设置为:

[theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];

使用数据重新加载表格后,

[theNSTableView reloadData];
[theNSTableView tile];

......甚至:

[theNSTableView setNeedsDisplay:YES];

所有视图都设置为“autoresizesSubviews”。

NSView和NSScrollView都没有任何引用插座 - 这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

在与Apple Developer Technical Support详细讨论此问题后,他们认为Carbon-Cocoa集成可能存在问题。

然而,他们还指出我真的不应该设置NSTableViewUniformColumnAutoresizingStyle,我应该在我自己的代码中计算所有列的宽度,然后告诉列记住它的宽度,或者存储宽度并确保在我以编程方式创建列之后,在每列上设置相同的宽度。

虽然我可以接受这一点,但我至少希望能够以编程方式调用当用户双击列分隔符时调用的相同方法,并且列调整自身大小以适合其所有单元格文本内容。但是,DTS告诉我这些功能不可用。

我在SO上遇到过这个问题的其他解决方案,我将看看它们是否可以适应以创建最佳解决方案。