Objective c NSTableView赢得';t布局/调整列大小,直到手动调整NSWindow的大小
我有一个NSTableView,其中有几个NSTableColumn对象,这些对象似乎设置了所有正确的自动调整大小标志。但是,每次我重新生成表的内容时,列都会返回到较小的大小——除非我单击并手动调整窗口的大小 NSTableView在内部:Objective c NSTableView赢得';t布局/调整列大小,直到手动调整NSWindow的大小,objective-c,cocoa,nstableview,appkit,Objective C,Cocoa,Nstableview,Appkit,我有一个NSTableView,其中有几个NSTableColumn对象,这些对象似乎设置了所有正确的自动调整大小标志。但是,每次我重新生成表的内容时,列都会返回到较小的大小——除非我单击并手动调整窗口的大小 NSTableView在内部: NSTableColumnAutoresizingMask NSTableColumnUserResizingMask [theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnA
NSTableColumnAutoresizingMask
NSTableColumnUserResizingMask
[theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[theNSTableView setNeedsDisplay:YES];
NSWindow
NSView
NSScrollView
NSTableView
(其他NSTableView对象:NSTableColumn、NSTextFieldCell、NSScroller(x 2)
列大小调整掩码始终为:
NSTableColumnAutoresizingMask
NSTableColumnUserResizingMask
[theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[theNSTableView setNeedsDisplay:YES];
创建的表格始终设置为:
NSTableColumnAutoresizingMask
NSTableColumnUserResizingMask
[theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[theNSTableView setNeedsDisplay:YES];
用数据重新加载表后,
[theNSTableView reloadData];
[theNSTableView tile];
…甚至:
NSTableColumnAutoresizingMask
NSTableColumnUserResizingMask
[theNSTableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
[theNSTableView setNeedsDisplay:YES];
所有视图都设置为“AutoResizesSubView”
NSView和NSScrollView都没有任何参考渠道——这可能是问题所在吗?在与苹果开发人员技术支持详细讨论了这个问题后,他们认为碳可可集成可能存在问题 但是,他们还指出,我真的不应该设置NSTableViewUniformColumnAutoresizingStyle,我应该在自己的代码中计算所有列的宽度,然后告诉列记住其宽度,或者存储宽度,并确保在以编程方式创建列后在每列上设置相同的宽度n 虽然我可以接受这一点,但我至少希望可以通过编程调用当用户双击列分隔符时调用的相同方法,并且列会调整自身大小以适应其所有单元格文本内容。但是,DTS告诉我这些函数不可用
我在这里遇到了解决这个问题的其他解决方案,因此我将看看它们是否可以被修改以创建最佳解决方案。重新加载表的内容需要调用什么?何时重新加载?您是否在运行时更改过列?@WilShipley--在发生重大更改的不同时间,我会浏览并删除这些列列,然后重新添加它们。调用reloadData确实正确地填充了表。发布后,我从Apple DTS中发现了一些关于此问题的信息,我将在下面详细介绍。