我正在使用 Xcode Interface Builder 故事板构建应用程序。
我的 VideoViewController 实现以下操作:
@IBAction func openVideo(sender: AnyObject) {
...
}
将我的菜单项连接到第一响应者时,我可以看到我的行动:
不幸的是,当我启动我的应用程序时,菜单项是灰色的:
有什么想法吗?
答案 0 :(得分:2)
您应该可以控制点击NSMenuItem
并将其连接到您的VideoViewController。通常会使用IBOutlet
来连接您的IBAction
:
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var myMenuItem: NSMenuItem!
@IBAction func openItem(sender: AnyObject) {
print("success!")
}
}
在您的特定情况下,您可以通过控制单击并将连接器拖到VideoViewController。
答案 1 :(得分:1)
我知道OP找到了解决方案,即使我下载了他的项目,我也无法启用(取消灰显)我的菜单项。
这对我有用:
@IBAction
ViewController
func validateMenuItem(_ menuItem: NSMenuItem) -> Bool
中的ViewController
(当它验证true
确实是您愿意连接到的menuItem
时,它必须返回menuItem
@IBAction
)MenuItem
连接到First Responder
,然后连接到之前创建的@IBAction
那就是它。点击跑步和呼气。
答案 2 :(得分:0)
这里的问题是你缺少参数的下划线。如果你添加它,它将适用于First Responder。此外,对于Swift 3以上版本,发件人类型应为Any
,或特定控件类型,例如NSMenuItem
,但它仍然适用于AnyObject
。
@IBAction func openVideo(_ sender: Any) {
...
}