2015-09-01 2 views
1

# Изображений размещаются в представлении с помощью раскадровки. Я хочу использовать их программно, используя цикл For. Но не мог найти, как?Как манипулировать объектами IBOutlet UIImageView последовательно, используя для Loop

В настоящее время я использую следующий код:

@property (weak, nonatomic) IBOutlet UIImageView *img_level2; 
@property (weak, nonatomic) IBOutlet UIImageView *img_level3; 
@property (weak, nonatomic) IBOutlet UIImageView *img_level4; 
@property (weak, nonatomic) IBOutlet UIImageView *img_level5; 
@property (weak, nonatomic) IBOutlet UIImageView *img_level6; 
@property (weak, nonatomic) IBOutlet UIImageView *img_level7; 
... 
... 
... 
_img_level2.image = [_img_level2.image convertToGrayscale]; 
_img_level3.image = [_img_level3.image convertToGrayscale]; 
_img_level4.image = [_img_level4.image convertToGrayscale]; 
_img_level5.image = [_img_level5.image convertToGrayscale]; 
_img_level6.image = [_img_level6.image convertToGrayscale]; 
_img_level7.image = [_img_level7.image convertToGrayscale]; 

Теперь вместо того, чтобы писать их построчно я хочу использовать для цикла. Потому что эту процедуру можно назвать несколько раз для калибровки и позиционирования.

Прошу совета, спасибо!

ответ

1

Вместо того чтобы иметь каждую из своих кнопок как собственное свойство UIButton, вы можете определить коллекцию розетки, которая по существу представляет собой массив, который вы сможете обрабатывать точно так, как вы хотите (например, перебрать все его Предметы).

Как вы это делаете? Простой:

В вашем коде замените все IBOutlet UIImageView... линий с:

IBOutletCollection(UIImageView) NSMutableArray *imgLevels; 

На InterfaceBuilder, дать каждому из ваших UIImageViews другой тег, который будет соответствовать его индекс в IBOutletCollection.

И, наконец, при подключении объектов на вашем .xib или раскадровки файл, вы заметите, что она появится на REFERENCING Outlet Коллекции раздел вместо из REFERENCING Outlets, как вы привыкли.

Теперь у вас есть массив, который вы можете использовать для перебора ваших IBOutlets точно так же, как вы бы зацикливали «обычный» NSArray. Удачи!

+0

Спасибо, похоже, прочный подход, но из любопытства, как бы можно было достичь этого без использования IBOutletCollection? Потому что предположим, что если мы динамически создаем объекты UIImage, тогда не будет IBOutletCollection? – user3550458

+0

Это было бы еще проще. Вы просто вручную создадите массив, и всякий раз, когда вы динамически создаете UIImageView, вы добавляете его в массив. –

+0

любой пример кода, на который я могу посмотреть? Thx – user3550458

Смежные вопросы