调整NSBrowser列的大小以适应内容的宽度
我正在使用NSBrowser(10.6SDK / Cocoa应用程序),我想向浏览器列发送一条消息,使其调整宽度以匹配该列中最大单元格的宽度。
在概念上似乎很基本,即使应该有一个方法,但没有。
这里有人解决这个问题吗?你是怎么解决的?代码示例?
//更新
我添加了drop-support。代码有效,但列中的新项目不适合(有椭圆)。
-(BOOL) browser:(NSBrowser *)browser acceptDrop:(id <NSDraggingInfo>)info atRow:(NSInteger)row column:(NSInteger)column dropOperation:(NSBrowserDropOperation)dropOperation
{
NSPasteboard* pboard = [info draggingPasteboard];
NSData* rowData = [pboard dataForType:CMCourseDataType];
NSIndexSet* rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:rowData];
NSArray *selectedCourses = [[self coursesArrayController] selectedObjects];
Group *selectedGroup = [[self allGroupsArray] objectAtIndex:row];
[selectedGroup addCourses:[NSSet setWithArray:selectedCourses]];
[browser reloadColumn:1];
/ *下面尝试了新代码,导致第1列调整其宽度,但它们没有影响* /
[browser sizeToFit];
[[browser matrixInColumn:1] sizeToCells];
在awakeFromNib中,我设置:
[browser setColumnResizingType:NSBrowserUserColumnResizing];
谢谢
没有找到相关结果
已邀请:
3 个回复
室邢
或者,如果要调整整个浏览器的大小,可以尝试:
疏腔傻小雹
委托方法。 向表中添加新内容时,请将新列索引处的列宽数组的值设置为0。 当调用
委托时,计算每个单元格的宽度。对于NSTextFieldCells,我用过:
如果计算的单元格宽度大于存储的列宽,请将存储的值设置为
,并使用新值调用NSBrowser的
。
扇献隙
正如Josh所提到的那样,实现浏览器:willDisplayCell:atRow:column:method。在该方法中,使用一点填充将列调整为其中的最大行:
执行这两项操作将首先重置列,然后将其调整为最大行的大小。