2015-06-04 2 views
-1

Я искал этот проклятый вопрос более часа, и все так просто!Swift: Simple - как я могу назвать имя кнопки динамически?

У меня есть 9 изображений, и я хочу обратиться к любому из них в функции. Все они называются «img1» «img2» и т. Д. Они также связаны с моим кодом с помощью IBOutlets.

Func changeImage(imgNumber: Int){ 

imageName = "img" + String(imgNumber) 
self.imageName.image = UIImage(named: "smiley.jpg") } 

Вместо переменной ImageName я знаю, что могу просто сослаться на реальный объект, говоря «self.img1.image», но это не позволит мне динамически изменять любое изображение с функцией.

Пожалуйста, помогите!

+0

Вы можете поместить все ваши изображения в массив и обратиться к ним по индексу массива. –

ответ

0

Поместите свое изображение в корзину Asset Catalog.

(Вы можете создать его по новому файлу ...> Ресурс iOS> Каталог активов).

В каталоге активов дают ваши изображения называют как image1, IMAGE2, image3 и т.д.

UIImage(named: "image1") будет найти изображения в каталоге Asset.

Преимущество использования Asset Catalog заключается в том, что вы можете легко добавлять изображения, поддерживающие различные разрешения экрана.

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

0

Вы должны поместить их в коллекцию (например, в viewDidLoad), которая сохраняет порядок, т.е.

var images = [self.img1, self.img2, self.img3] 

и использовать индекс для доступа к указанной кнопке

images[idx].image = UIImage(named: "smiley.jpg") 

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

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

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