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)
まだありません成功。
Thxを追加する必要がありスウィフト4では
と
のObjective-C準拠した構文を試してみてください。残念ながら結果はありません。私はそれが重要かどうかわかりませんが、私はSwift 4を使用します – KO70
私は答えを更新しました。しかしSwift 4の可能性が最も高いのは 'init(itemIdentifier'メソッドは' String'パラメータでは機能しません) – vadian
コンソールメソッドの出力をinitメソッドに追加してトリガします。@objcを追加しても、 – KO70