Macos 连接到我的视图控制器iAction的菜单呈灰色
我正在使用Xcode Interface Builder情节提要构建一个应用程序 我的VideoViewController执行以下操作:Macos 连接到我的视图控制器iAction的菜单呈灰色,macos,interface-builder,menuitem,ibaction,xcode-storyboard,Macos,Interface Builder,Menuitem,Ibaction,Xcode Storyboard,我正在使用Xcode Interface Builder情节提要构建一个应用程序 我的VideoViewController执行以下操作: @IBAction func openVideo(sender: AnyObject) { ... } 将菜单项连接到第一响应者时,我可以看到我的操作: 不幸的是,当我启动应用程序时,菜单项呈灰色: 有什么想法吗?您应该能够控制并单击NSMenuItem,然后将其连接到您的VideoViewController。通常会使用IBOutlet来连接
@IBAction func openVideo(sender: AnyObject) {
...
}
将菜单项连接到第一响应者时,我可以看到我的操作:
不幸的是,当我启动应用程序时,菜单项呈灰色:
有什么想法吗?您应该能够控制并单击
NSMenuItem
,然后将其连接到您的VideoViewController。通常会使用IBOutlet
来连接您的IBAction
:
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var myMenuItem: NSMenuItem!
@IBAction func openItem(sender: AnyObject) {
print("success!")
}
}
在特定情况下,您可以控制单击并将连接器拖动到VideoViewController。您应该能够控制单击NSMenuItem并将其连接到VideoViewController。通常会使用
IBOutlet
来连接您的IBAction
:
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var myMenuItem: NSMenuItem!
@IBAction func openItem(sender: AnyObject) {
print("success!")
}
}
在您的特定情况下,您可以控制单击并将连接器拖动到VideoViewController。我知道OP找到了解决方案,即使我下载了他的项目,我也无法启用(取消灰显)我的菜单项 以下是对我有效的方法:
- 在目标
ViewController
- 覆盖目标
中的ViewController
(当它验证func validateNuItem(\umenuitem:NSMenuItem)->Bool
确实是您愿意连接到menuItem
的@IBAction
菜单项时,它必须返回
)true
- 将
连接到MenuItem
,然后连接到先前创建的First Responder
@IBAction
就这样。点击run and呼气。我知道OP找到了解决方案,即使我下载了他的项目,我也无法启用(取消灰显)我的菜单项 以下是对我有效的方法:
- 在目标
ViewController
- 覆盖目标
中的ViewController
(当它验证func validateNuItem(\umenuitem:NSMenuItem)->Bool
确实是您愿意连接到menuItem
的@IBAction
菜单项时,它必须返回
)true
- 将
连接到MenuItem
,然后连接到先前创建的First Responder
@IBAction
就这样。点击run并呼气。这里的问题是参数缺少下划线。如果你补充说,它将与第一反应。此外,对于Swift 3及以后的版本,发送方类型应为
Any
,或特定的控制类型,如NSMenuItem
,尽管它仍适用于AnyObject
@IBAction func openVideo(_ sender: Any) {
...
}
这里的问题是参数缺少下划线。如果你补充说,它将与第一反应。此外,对于Swift 3及以后的版本,发送方类型应为
Any
,或特定的控制类型,如NSMenuItem
,尽管它仍适用于AnyObject
@IBAction func openVideo(_ sender: Any) {
...
}
您是否已将OpenVideo连接到您的ViewController(例如,新建引用插座>ViewController)?如何操作?您应该能够控制单击“打开视频”菜单项并将连接器拖动到您的VideoViewController。当您这样做时,您应该看到openVideo iAction以将其连接到。此外,如果您没有IBOutlet设置,您可能需要一个:(例如
@IBOutlet var openVideoMenuItem:NSMenuItem!
)。这是iAction和NSMenuItem之间的桥梁。您是否也将OpenVideo连接到您的ViewController(例如,新建引用插座>ViewController)?我如何才能做到这一点?您应该能够控制单击“打开视频”菜单项并将连接器拖动到您的VideoViewController。当您这样做时,您应该看到openVideo iAction以将其连接到。此外,如果您没有IBOutlet设置,您可能需要一个:(例如@IBOutlet var openVideoMenuItem:NSMenuItem!
)。这是iAction和NSMenuItem之间的桥梁。正如我提到的,我使用的是故事板而不是XIBfile@MartinDelille:无论项目是否使用xibs
、nibs
、和/或故事板,都是相同的过程。如前所述(两次),您的代码需要一个IBOutlet
,而您显然没有包括它。iAction
函数不会自动连接到您的NSMenuItem
——我的答案中的图像应该说明如何进行连接。你能试试我的建议吗?另一个问题:你用什么工具生成了这个非常清晰的GIF动画?:-)@Martindelle:我使用screenflow创建了一个无损的屏幕播放,然后使用gifbrewery导入视频并生成动画gif。这听起来可能很复杂,但实际上需要两分钟。看看一个示例项目可能会有帮助吗?奇怪的是,您首先有一个灰显的NSMenuItem
(可能它没有被选为“已启用”?)。当我添加一个新的时,默认情况下它不会变灰,即使它没有连接到任何东西。作为测试,您可以尝试创建一个新项目,在AppDelegate.swift中放置iAction
和iOutlet
,看看是否可以连接NSMenuItem
。正如我提到的,我使用的是故事板而不是XIBfile@MartinDelille:无论项目是否使用xibs
,都是相同的过程,NIB
,和/或情节提要
。如前所述(两次),您的代码需要一个IBOutlet
,而您显然没有包括它。iAction
函数不会自动连接到您的NSMenuItem
——我的答案中的图像应该说明如何进行连接。你能试试我的建议吗?另一个问题:你用什么工具生成了这个非常清晰的GIF动画?:-)@马丁德里尔: