2011-11-05 85 views
9

我有一个项目,需要禁用/启用一些NSToolbarItems取决于不同的选项。我查了一下,发现没有参数。如何启用/禁用NSToolbarItem

有没有办法启用/禁用NSToolbarItem?

回答

9

在窗口,视图或文档控制器中实现NSToolbarItemValidation协议。该文档提供了下面的示例代码:

-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem { 

    BOOL enable = NO; 
    if ([[toolbarItem itemIdentifier] isEqual:SaveDocToolbarItemIdentifier]) { 

     // We will return YES (enable the save item) 
     // only when the document is dirty and needs saving 
     enable = [self isDocumentEdited]; 

    } else if ([[toolbarItem itemIdentifier] isEqual:NSToolbarPrintItemIdentifier]) { 

     // always enable print for this window 
     enable = YES; 
    } 
    return enable; 
} 

您还可以使用actiontag以确定正在验证什么工具栏项目。每当您的应用程序被激活或事件分派时,项目都会经常验证,因此它们将始终处于有效状态。

7

有一个更简单的解决方案:

-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem 
{ 

    return [toolbarItem isEnabled] ; 
} 

这样你可以使用[yourToolBarItem的setEnabled:YES/NO]。在你的代码中。

+1

绝妙的主意! –

+1

干净漂亮,在面料类 –

2

一种简单的方式迅速做到这一点,或者你可以口这客观C对于刚刚成立的行动

这将禁用项目

Mytoolbar.action = nil 

这将重新启用它

Mytoolbar.action = "Name of a function" 

在这样做,你会想用功能替换你的IBAction所以

@IBAction func blehbleh(sender: AnyObject){ Stuff } 

正如nsij22说你需要设置的行动将改为

func blehbleh(){ Stuff } 
0

在故事板中按住ctrl +从工具栏项拖动到代码动作。