2017-12-29 51 views
0

Swift 4では、NsPopupButtonをサブクラス化しました。ビューでコントロールを使用し、通常のCtrl +ドラッグを使用してIBActionとそのすべてを作成できます。NSPoupupButtonのSwiftサブクラス、サブクラス内でのアクション(IBAction)の取得方法

私がしたいことは、サブクラス自体内のアクションを処理し、ビューが応答できるようにすることです。

私はSwift/MacOS/Xcodeの新機能ですが、C#を使用してWindowsでプログラムを作成し、ターゲット/アクションとレスポンダツリーのトラバーサルの概念を理解していますが、私には優しいです:)これを行う理由は、ユーザはアイテムを選択し、後で復元するためにアイテムを保存する。

私はサブクラスでself.target = selfに、self.action = #Selectorをローカル関数にしようとしました。それは動作しますが、アクション/イベントはレスポンダツリーをトラバースするのを止め、サブクラスで停止します。

どのようにして、サブクラスが選択を変更したユーザーに応答するようにすることができますか?

答えて

0

macOSには、Cocoa Bindingsというパターンがあります。これは、ターゲット/アクションの非常に便利な代替として使用することができます。

ポップアップボタンのメニュー項目から、ターゲット表示コントローラー(またはxibが使用されている場合はクラス)のFirst Responder(読み取りキューブ)にドラッグします。 IBActionが正しく作成されている場合は、リストに表示されるはずです。アクションメソッドは、メソッドを実装した現在のレスポンダチェーンの最初のオブジェクトで実行されます。

+0

こんにちは、私はこれを試してみましたが、ビューで呼び出されたアクションを取得している間、サブクラスで呼び出されません。だから、私のサブクラスでは、AwakeFromNibで、私はtarget = selfとaction =#selector 'local method'を追加しました。しかし、ストーリーボードでは、コントロールを最初のレスポンダにCtrl +ドラッグして、私がviewcontrolerで作成したIBActionは、View Controllerが決して起動しません。 - 何かご意見は? –

関連する問題