1

さて、次のようなUIImageViewのIBOutletがありました。

.h
@property (nonatomic,retain) IBOutlet UIImageView *ground;

次に、この「ground.frame」のような変数を使用できます。私のコードでは、次のようになります。

.m
if (CGRectIntersectsRect(player.frame,ground.frame)) {
   "STUFF"
}

これは問題なく動作しますが、「IBOutletCollection」が必要であることがわかりました。このために.hコードを変更しました:

.h
@property (nonatomic,retain) IBOutletCollection(UIImageView) NSArray *ground;

「NSArrayタイプのオブジェクトにフレームが見つかりません」というエラーが表示されるため、もう一方を機能させる方法がわかりません。だから私の質問は、.mファイルのコードを変更して、以前と同じように機能するようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

配列は UIImageViews のコレクションであるため、配列からオブジェクトを取り出してクエリを実行します。

多分...

for(UIImageView *xground in ground)
{

if (CGRectIntersectsRect(player.frame,xground.frame)) {
   //do stuff 
   break;

}

}

配列内の各ビューにそのフレームについて尋ねます。

本当にパラノイアになりたい場合は、オブジェクトのクラス チェックを実行して、配列から派生した UIImageView であることを確認しますが、既に UIImageView の配列として宣言しているため、おそらく必要ありません。

于 2011-11-27T09:37:07.557 に答える