2017-08-09 7 views
0

私は、macOSプログラミングをかなり新しくしており、NSToolbarItemのカスタムクラスを実装したいと考えていました。アイテムが押されるたびに、クラスのプロパティを変更したい。ここでのコード例は、次のとおりNSToolbarItemのアクションがトリガーされていません

class CustomToolbarButton: NSToolbarItem 
{ 
    override init(itemIdentifier: String) 
    { 
     super.init(itemIdentifier: itemIdentifier) 
     super.target = self 
     super.action = #selector(reactToPress) 
    } 

    func reactToPress(sender: NSToolbarItem) 
    { 
     toggled_property = !toggled_property 
     print("Item pressed") 
    } 

    private(set) var toggled_property = true; 
} 

このクラスは、ストーリーボードのツールバーに挿入されます。アイデンティティ・インスペクタのクラス指定子を必ずCustomToolbarButtonに変更しました。ただし、「アイテムが押し込まれました」がコンソール出力に表示されないため、アクションは実行されません。

私はまた、次の方法で「reactToPress」関数を宣言しようとしました:

func reactToPress() 
@objc func reactToPress() 
@objc func reactToPress(sender: NSToolbarItem) 

まだありません成功。

答えて

0

は、明示的に提案を@objc属性

@objc func reactToPress(_ sender: NSToolbarItem) 
+0

Thxを追加する必要がありスウィフト4では

super.action = #selector(reactToPress(_:)) 

func reactToPress(_ sender: NSToolbarItem) 

のObjective-C準拠した構文を試してみてください。残念ながら結果はありません。私はそれが重要かどうかわかりませんが、私はSwift 4を使用します – KO70

+0

私は答えを更新しました。しかしSwift 4の可能性が最も高いのは 'init(itemIdentifier'メソッドは' String'パラメータでは機能しません) – vadian

+0

コンソールメソッドの出力をinitメソッドに追加してトリガします。@objcを追加しても、 – KO70

関連する問題