0

おそらく、これを設定するためのより良い方法があるので、提案を受け付けています。

しかし、これが私がやっていることです。メインの UIView があります。その上に、UIImageView と別の UIView があります。UIImageView が変更されたら、2 番目の UIView を変更したいと考えています。そのためのクラスがあり、IB オブジェクトのタイプはそのクラスに設定されています。そのクラスの .m には、いくつかの長方形を描画する drawRect メソッドがあります。.m には、合成された NSMutableArray プロパティもあります。メイン ビューのコントローラーでそのクラスのインスタンスを作成しました。

問題: アプリの起動時に drawRect が正常に動作するという事実にもかかわらず (デバッガーでトレースされているように)、UIImageView が変更されたときに、@synthesize の配列を更新した後、2 番目のビューのインスタンス変数で「setNeedsDisplay」を呼び出しますが、 drawRect は呼び出されません。

インスタンスと関係があると思います。ここではスレッド化が問題になるとは思いません。表示されている画像に基づいて、画面の別の領域に描画したいだけです。

4

1 に答える 1

0

OK、これを見て同様の問題を抱えている人のために...

それは確かに「インスタンス」の問題でした。IB でセカンダリ UIView を作成しました。そこに接続を確立していたので、起動時にコードが正常に実行されたと思います。

修正は、サブビューをプログラムで作成し、それをメイン ビューに追加することでした。そうすれば、インスタンスは 1 つしかありませんでした。@synthesize された配列変数の更新と、それに続く drawRect の呼び出し (setNeedsDisplay 経由) は、サブビューとしてメイン ビューに追加したセカンダリ ビューの 1 つのインスタンスに行きました。問題が解決しました。

于 2010-05-11T02:38:57.497 に答える