0

独自のビュー、UIImageView (MyImageView) のサブクラス、および標準の UILabel を持つ UIViewController (MyViewController) のサブクラスがあるとします。

MyImageView のコードでは、タッチ イベントでタッチされているピクセルの色を取得する作業を行っており、その内容で UILabel を更新したいと考えています。MyImageView と UILabel の両方が MyViewController のインスタンスとして存在するため、この通信を実現する一般的な方法は何ですか?

C ++から来て、このようなものをMyImageViewに追加したでしょう

-(void)registerMyLabel:(UILabel*)label;

次に、MyViewController の初期化のどこかで、上記の方法を使用して UILabel インスタンスを MyImageView に登録します。ここで同様の手法を使用できると確信していますが、疑問に思っています.objective-cのUIコントロールでこれを行う組み込みのメカニズムはありますか?

これをどのように構成しますか?

4

1 に答える 1

2

ビュー コントローラーにビュー間の通信を行わせるようにします。

タッチ処理がビューの責任であるか、コントローラーの責任であるかは、さまざまな哲学の影響を受けますが、ビューを色検出機能を持つものとして定義するとしましょう。色が検出されたら、デリゲート プロトコルMyImageViewを使用するか、. その情報が与えられると、コントローラーはラベルに対して必要なことを何でも行います。NSNotification

(結合が緩いため、多くの場合、デリゲートよりも通知の方が好きです。)

いずれにせよ、コントローラーが、それを必要とする他の部分との間でイベントとデータを通信する責任がある場合、MVC とより調和しています。

于 2012-07-27T00:53:42.847 に答える