1

タッチなどのユーザーアクションを使用してカスタムUIViewControllerを作成しました。parentObjectでユーザーインタラクションを処理したいと思います。言い換えれば、ViewControllerを作成したものです。

他の言語からは、プッシュされたイベントを使用することに慣れています。したがって、私の親オブジェクトには、反応できるViewControllerオブジェクトの参照に何らかのリスナーがあります。

そのタイプのインタラクションはObjectiveCによってどのように処理されますか?

4

3 に答える 3

3

これは、1) レスポンダー チェーン、2) 通知、および 3) デリゲートによって実行できます。

  1. すべての UI オブジェクトはレスポンダー チェーンを形成し、現在フォーカスされている要素から始まり、それが親ビューになり、通常はアプリケーション オブジェクトまで続きます。nib の特別な First Responder オブジェクトにアクションを送信することで、誰かがそれを処理するまでレスポンダー チェーンにスローされます。このメカニズムを使用して、誰がいつ処理するかを知らなくても、イベントを発生させることができます。これは、HTML イベント モデルに似ています。

  2. NSNotificationCenter によって送信される通知は、任意の数のリスナーが受信できます。これは、C# イベントなどに最も近いものです。

  3. デリゲートは、イベントを 1 つのオブジェクトに送信する最も単純なメカニズムです。このクラスは、任意のオブジェクトに割り当てることができるという名前の弱いプロパティとdelegate、このオブジェクトが実装することになっているプロトコルを宣言します。多くのクラスがこのアプローチを使用します。主な問題は、この方法では複数のリスナーを持つことができないことです。

于 2012-06-27T14:03:43.673 に答える
0

2つのviewController間の相互作用については、委任/委任を調べる必要があります。まず、その仕組みを理解する必要があります。

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

于 2012-06-27T14:03:06.617 に答える
0

「子」View Controllerが「親」と通信できるようにするデリゲートプロトコルを実装する必要があるようです

http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.htmlを参照してください。

于 2012-06-27T14:04:41.477 に答える