如何启用/禁用NSToolbarItem

时间:2011-11-05 02:48:19

标签: cocoa

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

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

4 个答案:

答案 0 :(得分:10)

在您的窗口,视图或文档控制器中实现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来确定要验证的工具栏项。每当您的应用程序被激活或调度事件时,项目都会经常验证,因此它们将始终处于有效状态。

答案 1 :(得分:6)

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

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

    return [toolbarItem isEnabled] ;
}

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

答案 2 :(得分:2)

在swift中执行此操作的简单方法,或者您可以将此移植到目标c只是设置操作

这会禁用项目

Mytoolbar.action = nil

这可以实现它

Mytoolbar.action = "Name of a function"

在执行此操作时,您可能希望将IBAction替换为函数

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

将更改为

func blehbleh(){ Stuff }

答案 3 :(得分:0)

正如nsij22所说,你需要设定行动。

在Storyboard中,只需按住Ctrl键并从工具栏项拖动到代码操作。