2015-11-14 2 views
0

У меня есть переменная в Xcode, которую мне нужно использовать для создания другой команды. Как объединить это? Это понятиеКак использовать переменную для построения команды

У меня есть переменная с именем «activechannel1» и кнопки Overlay1 - Overlay12

Я хочу, чтобы установить изображение определенной кнопки и кнопка будет зависеть от значения activechannel1. Все номера соответствуют именам файлов, поэтому я пытаюсь это сделать.

Допустим, что

ActiveChannel1 = 6 // This changes and represents which button I want to change 

Я пытаюсь сделать это, но я получаю последовательную ошибку заявление:

Overlay"\(ActiveChannel1)".image = UIImage(named: "y\(ActiveChannel1)") 

Что я хочу, по существу, выход:

Overlay6.image = UIImage(named "y6") 

ответ

0

You не может динамически «набирать» имена переменных. Вы можете получить , чтобы получить доступ к ним таким образом, чтобы переменная могла изменить тот, который вы используете.

Классы могут оказаться полезными (обратите внимание, что есть изменения в том, как использовать их в Swift):
NSArray
NSDictionary

Учитывая X как число (в виде строки здесь):

Для OverlayX вы можете использовать массив.

let overlays = [Overlay1, Overlay2, /*...*/] 

Доступ к правой переменной с использованием индексов 0-11.

yXNSString(format:).

//use %d for int 
let imageName = NSString("y%@", X - 1) //%@ is Obj-C format for id IIRC, I'm not sure if it changes in Swift 
overlays[X - 1].image = UIImage(named: imageName) 
//or, in a single line 
overlays[X - 1].image = UIImage(named: NSString(format: "y%@", argList: X - 1)) 

Обратите внимание, что этот код не проверен.
Также обратите внимание, что я использую Objective-C больше, чем Swift. Если кто-то сталкивается с этим и считает синтаксис неправильным, прокомментируйте или отредактируйте мой пост.

+1

Когда вы получаете доступ к оверлеям с 'overlays [1]', вы получаете 'Overlay2' назад. Поэтому в этом случае это должно быть «overlays [X-1] .image = ...', поскольку вы считаете от 1. – Qbyte

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