Как использовать свойства UIImageView, такие как "center.x" и "frame", когда это массив IBOutletCollection? - PullRequest
1 голос
/ 27 ноября 2011

Хорошо, поэтому у меня был IBOutlet UIImageView, который выглядит так:

.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, чтобы он работал так же, как и раньше, но теперь как массив?

Спасибо

1 Ответ

1 голос
/ 27 ноября 2011

Массив представляет собой набор UIImageViews, поэтому вы берете объект из массива и запрашиваете его.

Может быть ...

for(UIImageView *xground in ground)
{

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

}

}

Вы спрашиваете каждое представление в массиве о его кадре.

Если вы хотите быть действительно параноиком, запустите проверку класса для объекта, чтобы убедиться, что это UIImageView, выходящий из массива, но, вероятно, не обязательно, так как вы уже объявили его как массив UIImageView.

...