0

目的 c のデリゲートの概念全体に関する情報を得るために、多くの記事を読みました。少なくとも私はそれについての一般的な考えを得たと思います。しかし、自分の質問に対する答えが見つかりませんでした - または、見つけただけでわかりませんでした...

私の場合、UIViewController にプログラムで追加するカスタム サブビューを取得しました。コントローラーのいくつかのメソッドを呼び出すために、カスタム UIView からの対話が必要です。SubView で UIViewController を参照するのではなく、デリゲートの概念を作成した方がよいと思いますよね?私の質問は、私の UIScrollViewDelegate で何かを行うことはできないのでしょうか。私のSubViewはUIScrollViewであるため、私のUIViewControllerはいくつかのデリゲートメソッドを実装しています。したがって、次のような方法で呼び出すことができるカスタム メソッドを追加することは可能でしょうか。

[self.delegate myCustomMethodOnUIViewController]

または、最善の方法は何ですか?プロトコルを設定し、カスタム デリゲートとして UIViewController に追加する必要がありますか? サブビューにデリゲート プロパティを設定する必要がありますか?

手伝ってくれてありがとう!アンディ

4

1 に答える 1

0

UIView をサブビューとして UIViewController に追加し、サブビューでスーパービューからいくつかのメソッドを実行したい場合、ソフトウェア設計に誤りがある可能性があります。

それを行う必要がある場合は、循環包含に @class 変数を使用し、メソッドを呼び出します。@class ディレクティブの詳細については、こちらをご覧ください。

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocDefiningClasses.html

詳細な図はリンクで読むことができます: @class vs. #import

デリゲートとプロトコルで動作させることができますが、リークを避けるために、同じコンテキスト内でメモリを適切に処理するようにしてください。

于 2012-08-10T09:41:43.750 に答える