0

Xcode Interface Builderストーリーボードを使用してアプリケーションを構築しています。自分のメニューがビューコントローラに接続されていますIBActionがグレー表示されています

マイVideoViewControllerには、次のアクションを実装しています:ファーストレスポンダーに私のメニュー項目を接続する場合

@IBAction func openVideo(sender: AnyObject) { 
    ... 
} 

、私は自分の行動を見ることができます:

残念ながら

connection

、とき私は自分のアプリケーションを起動し、メニュー項目はグレーで表示されます:

enter image description here

+0

OpenVideoをViewControllerに接続しましたか(たとえば、新しい参照アウトレット> ViewController)? –

+0

どうすればいいですか? –

+0

「ビデオを開く」メニュー項目をControl-クリックし、コネクターをVideoViewControllerにドラッグするだけでよいのです。それを行うと、openVideo IBActionが接続されていることがわかります。 –

答えて

2

NSMenuItemを制御してクリックし、VideoViewControllerに接続できるはずです。通常IBOutletを接続するために使用されるあなたのIBAction:あなたの特定のケースで

class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet var myMenuItem: NSMenuItem! 

    @IBAction func openItem(sender: AnyObject) { 
     print("success!") 
    } 
} 

enter image description here

あなたがコントロールクリックし、あなたのVideoViewControllerにコネクタをドラッグします。

+0

私が言及したように、XIBファイルではなくStoryboardを使用しています –

+0

@MartinDelille:プロジェクトが 'xibs'、' nibs'、および/または 'storyboards'を使用しているかどうかにかかわらず同じプロセスです。前述のように(2回)、あなたのコードには 'IBOutlet'が必要です。 'IBAction'関数は自動的にあなたの' NSMenuItem'に接続するつもりはありません - 私の答えのイメージはそれを行う方法を示すべきです。あなたが私が提案したことを試すことができましたか? –

+0

他の質問:このすばらしいGIFアニメーションを生成するためにどのツールを使用しましたか? :-) –

1

私はOPが解決策を見つけたと知っています。プロジェクトをダウンロードしたにもかかわらず、メニュー項目を有効にすることができませんでした。ここで

は私のために働いていたものです:

  • はそれがmenuItemが実際にあなたがに喜んでmenuItemであることを検証するとき(それがtrueを返さなければならない対象ViewControllerにターゲットで@IBActionViewController
  • オーバーライドfunc validateMenuItem(_ menuItem: NSMenuItem) -> Boolを作成します。 @IBActionに接続してください)
  • MenuItemFirst Responderに接続し、次に@IBActionに接続してくださいrlier

これだけです。ヒットして吐き出す

関連する問題