2013-04-11 30 views
1

NSToolbarItemGroup記錄爲here。我找不到比這更多的東西!NSToolbarItemGroup - 不起作用?

我正在嘗試使用它,看看它是怎麼樣的。我的代碼基本上是從文檔中直接提取的。但是,我從未在我的工具欄中看到「羣組」。代碼運行,並且該項目被添加到工具欄,但它不可見?!

有沒有人使用過這個成功?使用最新的XCode,環境爲10.8.3。

- (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; 
} 

回答

5

我也遇到過。它很煩人。我的問題是我需要明確設置每個項目和包含組的minSizemaxSize。也許這將工作:

- (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。哎呀。