NSToolbarItemGroup 已记录 here 。我找不到更多关于它的信息!
我正在尝试使用它,看看它看起来如何。我的代码基本上是直接从文档中提取的。但是,我从未在工具栏中看到“组”。代码运行,并且该项目被添加到工具栏,但它只是不可见?!
有人成功使用过这个吗?环境是10.8.3,带有最新的XCode。
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
{
return [NSArray arrayWithObject:@"GroupItem"];
}
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
{
return [NSArray arrayWithObject:@"GroupItem"];
}
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
NSToolbarItem *item1 = [[NSToolbarItem alloc] initWithItemIdentifier:@"Item1"];
NSToolbarItem *item2 = [[NSToolbarItem alloc] initWithItemIdentifier:@"Item2"];
[item1 setImage:[NSImage imageNamed:NSImageNameQuickLookTemplate]];
[item2 setImage:[NSImage imageNamed:NSImageNameQuickLookTemplate]];
[item1 setLabel:@"Prev"];
[item2 setLabel:@"Next"];
NSToolbarItemGroup *group = [[NSToolbarItemGroup alloc] initWithItemIdentifier:@"GroupItem"];
[group setSubitems:[NSArray arrayWithObjects:item1, item2, nil]];
[group setLabel:@"Navigate"];
return group;
}
最佳答案
我也遇到过这个问题。它很烦人。我的问题是我需要显式设置每个项目和包含组的 minSize
和 maxSize
。也许这会起作用:
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
NSToolbarItem* retVal = nil;
if ([@"GroupItem" isEqual: itemIdentifier])
{
NSToolbarItem *item1 = [[NSToolbarItem alloc] initWithItemIdentifier:@"Item1"];
NSToolbarItem *item2 = [[NSToolbarItem alloc] initWithItemIdentifier:@"Item2"];
NSToolbarItemGroup *group = [[NSToolbarItemGroup alloc] initWithItemIdentifier:@"GroupItem"];
[group setSubitems:[NSArray arrayWithObjects:item1, item2, nil]];
item1.image = [NSImage imageNamed:NSImageNameQuickLookTemplate];
item1.minSize = item1.image.size;
item1.maxSize = item1.image.size;
item1.label = @"Prev";
item2.image = [NSImage imageNamed:NSImageNameQuickLookTemplate];
item2.minSize = item2.image.size;
item2.maxSize = item2.image.size;
item2.label = @"Next";
group.label = @"Navigate";
NSSize minSize = NSZeroSize;
NSSize maxSize = NSZeroSize;
for (NSToolbarItem* item in group.subitems)
{
minSize.width += item.minSize.width;
minSize.height = MAX(minSize.height, item.minSize.height);
maxSize.width += item.maxSize.width;
maxSize.height = MAX(maxSize.height, item.maxSize.height);
}
group.minSize = minSize;
group.maxSize = maxSize;
retVal = group;
}
return retVal;
}
这对我来说似乎很愚蠢,这不是默认行为,但这并没有阻止我浪费半个小时来弄清楚它。另外,请注意排序 - 如果您在将子项放入组的子项集合之前设置了子项的最小和最大尺寸,则该组将为您重置尺寸为 32x32 。咕噜。
关于cocoa - NSToolbarItemGroup - 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15949835/