【发布时间】:2011-11-05 02:48:19
【问题描述】:
我有一个项目需要禁用/启用某些 NSToolbarItems 取决于不同的选项。我查了一下,没有找到这个参数。
有没有办法启用/禁用给定的NSToolbarItem?
【问题讨论】:
标签: objective-c cocoa nstoolbar nstoolbaritem
我有一个项目需要禁用/启用某些 NSToolbarItems 取决于不同的选项。我查了一下,没有找到这个参数。
有没有办法启用/禁用给定的NSToolbarItem?
【问题讨论】:
标签: objective-c cocoa nstoolbar nstoolbaritem
在您的窗口、视图或文档控制器中实现 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;
}
您还可以使用action 或tag 来确定正在验证的工具栏项。每当您的应用被激活或事件被调度时,项目都会被频繁验证,因此它们将始终处于有效状态。
【讨论】:
有一个更简单的解决方案:
-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem
{
return [toolbarItem isEnabled] ;
}
这样你就可以使用 [yourToolBarItem setEnabled:YES/NO] ;在你的代码中。
【讨论】:
一种快速完成此操作的简单方法,或者您可以将其移植到目标 c 是设置操作
这会禁用该项目
Mytoolbar.action = nil
这会重新启用它
Mytoolbar.action = "Name of a function"
在执行此操作时,您需要用函数替换您的 IBAction
@IBAction func blehbleh(sender: AnyObject){ Stuff }
将改为
func blehbleh(){ Stuff }
【讨论】:
正如 nsij22 所说,您需要设置操作。
在 Storyboard 中,只需 ctrl+从工具栏项拖动到您的代码操作。
【讨论】: