2017-08-20 2 views
1

私はMacOS用に開発するためにCocoaとSwift 3を使用しています。私は、ユーザーがメインメニューのメニュー項目をクリックすると、次のコードを使用してtrueにユーザーのデフォルトキー(ブール値)を設定しようとしています。MacOSアプリケーションクラスデータ(セグ)

class app: NSApplication, NSApplicationDelegate { 
@IBOutlet weak var connec: NSMenuItem! 
@IBAction func connec(_ sender: Any) { //User has clicked the menu item 
    UserDefaults.standard.set(true, forKey: "CalledFromMenu") 
    UserDefaults.standard.synchronize() //I know it's deprecated, worth a shot though 
    print(UserDefaults.standard.value(forKey: "CalledFromMenu")) 
    print("menu") 
    //Neither of these actually print when I click the button, but the segue happens. 
    //There is a Show segue in the interface builder, I cannot invoke a custom SegueWithIdent here either 
    } 
} 

アプリケーションはセグを実行しますが、機能は実行しません。私はそれが最初にセグを実行するので、私のコードをバイパスしていると仮定し、それは私にとって最も理にかなっています。このメニュー項目をクリックすると、キーをtrueに設定し、メインメニュー(File>Connection Handler)から切り出したいと思います。うまくいけばそれは意味がある、事前に感謝する。

答えて

0

IBActionの代わりに、メニューバーを含むシーンにUser Defaults Controllerをドラッグし、メニュー項目の「値」バインディングをバインドするだけで、ユーザーのデフォルトでブール値にメニュー項目を同期させることができます"Model Key Path"フィールドにデフォルトキーを入力して、ユーザーデフォルトコントローラに入力します。私はこれを試したところ、メニュー項目もセグを実行するように設定されていても、値を同期させたままにしているようです。

+0

ありがとうございます!完璧に働いた! – Ckacmaster