2017-03-14 10 views
7

ターゲットとnilのアクションはどのようにすればよいですか?一方、Actionとnil Targetで作業する必要があるのはいつですか?また、ActionとTargetの両方でいつ作業する必要がありますか?ターゲットとアクションの違いは何ですか?

let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil) 
+0

なぜダウン投票しましたか?あなたは私に教えてくれますか?お願いします。私はすぐに –

答えて

8

通常、ターゲットとアクションが同時に表示されます。

ターゲットとアクションは、特定のメソッドを参照するために使用されます。コードスニペットでは、UIBarButtonItemを作成しています。 UIBarButtonItemは、タップされたときにどのメソッドを呼び出すべきかを知る必要があります。

どのような方法で呼び出すのですか?

残念ながら
let rightButton = UIBarButtonItem(
    title: "Done", style: .done, methodToCall: self.myMethod) 

、迅速でのみ動作:

あなたは言うかもしれない「ちょうどメソッドの参照を渡します」。 UIBarBUttonItemは目的のC APIなので、このアプローチは使用できません。

目的Cでは、Selectorはメソッドを表しますが、メソッドを呼び出すオブジェクトは保存しません。そのため、追加のtargetパラメータが必要です。メソッドが呼び出されるオブジェクトを指定します。一方、actionは、どのメソッドを呼び出すかを指定します。

ここではself.myMethodとします。メソッドが呼び出されるオブジェクトはselfであり、呼び出されるメソッドはmyMethodです。すばらしいです!さあ、これらを渡しましょう!

let rightButton = UIBarButtonItem(
     title: "Done", style: .done, target: self, action: #selector(myMethod)) 
+0

を敏感にしています。この問題を解決するために私を助けてください。http://codereview.stackexchange.com/questions/157401/loading-data-from-a-web-api-to-be-displayed-in-aテーブルビュー –

0

ターゲット:

セレクタ(uはアクションで指定方法)が呼び出されるべきでオブジェクト/インスタンスです。

アクション:あなたはボタンをタップしたときにトリガする方法の

名前。

ターゲットとnilアクションはどのようにすればいいですか?あなたは、画面内のボタンを持っている場合

は/ ViewControllerを、あなたがAppleのドキュメントによると(ダミーアクションなしでボタン)

1

タップすると、それは任意のメソッドをトリガーにしたいいけません。

ターゲット・アクションは、オブジェクトが イベントが発生したときに他のオブジェクトにメッセージを送信する必要 情報を保持する設計パターンです。格納される情報は、呼び出されるメソッドを識別するアクションセレクタ と、メッセージを受け取るオブジェクトである ターゲットの2つのデータ項目で構成されます。イベントが発生したときに送信されたメッセージ は、アクションメッセージと呼ばれます。ターゲット は任意のオブジェクト(フレームワークオブジェクト)でもかまいませんが、通常はアプリケーション固有の の方法でアクションメッセージを処理するカスタム コントローラです。 MVCの面では

enter image description here

対象:

は(あなたのケースでUIBarButtonItem)代理人として行為は、オブジェクトを表示することで、コントローラです。

処置:表示への対応で

メソッドの呼び出し(委任)。複数のチェックのために

Targe-Action

0

ターゲットは - アクションメソッドを発射すると想定される上で何かです。この場合、それは自己でなければなりません。 Selfはここにボタンオブジェクトを表します。

アクション - ボタンのタップイベントで呼び出されるセレクタメソッドを意味します。

ボタンでアクションイベントを許可しない場合は、selectorをnilとして指定します。したがって、ボタンオブジェクトとして扱う必要があります。

0

アクションはメソッドのセレクタであり、対応するイベントが発生したときに実行されます(たとえば、ボタンがタップされたとき)。アクションを設定しないと、ボタンは何も行いません。

ターゲットはメッセージコールの受信者です。これをnilに設定すると、メッセージコールはレスポンダチェーンを介して送信されます。これは、iOSではまれですが、macOSでは非常に一般的です。

関連する問題