代码添加toolbar(Cocoa)

     在使用完全代码的窗体中,应该需要这段代码加入toolbar。

NSToolbar *tb = [[[NSToolbar alloc] initWithIdentifier:@"abc"] autorelease]; //如果缺少了识别码,运行会报错的
    self.window.toolbar =tb;

  对于通过xib文件或者storyboard添加的窗体,应该不需要的。

   接下来需要对self.window.toolbar设置一下

    [self.window.toolbar setAllowsUserCustomization:YES];  //允许自定义toolbar
    [self.window.toolbar setAutosavesConfiguration:YES];  //允许保存
    [self.window.toolbar setDelegate:(id)self];  //设置代理类
    [self.window.toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];  //设置显示类型为图片+文字

 接下来用到几个toolbar相关的接口


-(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
{
    //NSToolbarFlexibleSpaceItem
    //zoom
    NSArray *list = [NSArray arrayWithObjects:@"add-abc", nil];
    return list;
}

-(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
{
    NSArray *list = [NSArray arrayWithObjects:@"add-abc", nil];
    return list;
}

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
    if ([itemIdentifier isEqualToString:@"add-abc"]) {
        NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:@"add-abc"] autorelease];
        [item setImage:[NSImage imageNamed:@"Add-ABC"]];
        [item setPaletteLabel:@"ABC TEST"];
        [item setLabel:@"ABC TEST"];
        
        [item setMinSize:CGSizeMake(25, 25)];
        [item setMaxSize:CGSizeMake(100, 100)];
        
        [item setTarget:self];
        [item setAction:@selector(onAddABC:)];
        return item;
    }
    else
    {
    		//窗体上的toolbar自动放行
        NSToolbarItem *item = nil;
        for (int i=0; i<self.window.toolbar.items.count; i++) {
            NSToolbarItem *tmp = [self.window.toolbar.items objectAtIndex:i];
            if ([tmp.itemIdentifier isEqualToString:itemIdentifier]) {
                item = tmp;
                break;
            }
        }
        return item;
    }
    return nil;
}


-(IBAction)onAddABC:(id)sender
{
    NSLog(@"%s",__FUNCTION__);
}

解释一下,这里是添加一个识别码为“add-abc”,图片名为“Add-ABC.png”(jpg也可以的),标题为“ABC TEST”的项。这些类似流程在网上应该不难找到,然而很尴尬的发现,窗体界面并没有看到自定义项,需要在toolbar上右键才找到“ABC TEST”,需要手动拉到显示区域。原因是在初始化的时候少了一段代码。所以要将第二个代码段改一下,如下:


    [self.window.toolbar setAllowsUserCustomization:YES];
    [self.window.toolbar setAutosavesConfiguration:YES];
    [self.window.toolbar setDelegate:(id)self];
    [self.window.toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];

    [self.window.toolbar insertItemWithItemIdentifier:@"add-abc" atIndex:0];  //添加这行就能在toolbar上默认显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值