如何启用/禁用 NSToolbarItem

发布于 2024-12-13 19:35:20 字数 112 浏览 0 评论 0原文

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

有没有办法启用/禁用给定的 NSToolbarItem ?

I have a project that needs to disable/enable some NSToolbarItems depends on different options. I checked and found no parameter for this.

Is there a way to enable/disable a given NSToolbarItem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

走走停停 2024-12-20 19:35:20

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

Implement NSToolbarItemValidation Protocol in your window, view or document controller. The documentation gives the following sample code:

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

You can also use action or tag to determine what toolbar item is being validated. Items are validated frequently, whenever your app is activated or events are dispatched, so they will always be in a valid state.

嘴硬脾气大 2024-12-20 19:35:20

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

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

    return [toolbarItem isEnabled] ;
}

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

There is an easier solution :

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

    return [toolbarItem isEnabled] ;
}

that way you can use [yourToolBarItem setEnabled:YES/NO] ; in your code.

也只是曾经 2024-12-20 19:35:20

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

这会禁用该项目

Mytoolbar.action = nil

这会重新启用它

Mytoolbar.action = "Name of a function"

在执行此操作时,您会希望用函数替换 IBAction,因此

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

将更改为

func blehbleh(){ Stuff }

an easy way to do this in swift, or you could port this to objective c is to just set actions

This Disables the item

Mytoolbar.action = nil

This reEnables it

Mytoolbar.action = "Name of a function"

In doing this you would want to replace your IBAction with function so

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

would be changed to

func blehbleh(){ Stuff }
旧夏天 2024-12-20 19:35:20

正如 nsij22 所说,你需要采取行动。

在情节提要中,只需按住 Ctrl 键并从工具栏项目拖动到代码操作即可。

As nsij22 said you need to set action.

In Storyboard just ctrl+drag from toolbar item to your code action.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文