Редактировать
Чтобы прямо ответить на ваш вопрос: Нет, вы не можете этого сделать.
Код, написанный на Swift, скомпилирован - это это не интерпретируемый / скриптовый язык.
Таким образом, вы не можете написать код, который создает кнопку с именем"littleButton" и затем имеет строку кода littleButton.backgroundColor = .red
Вы можете вроде сделать это, создав словарь, в котором в качестве ключа будет указано «имя» элемента, а в качестве значения будет указана ссылка на элемент.
Начните с инициализации пустого словаря:
var buttonsDict: [String : UIButton] = [String : UIButton]()
Ваше "создание" веселья c может начаться так:
func createButton(named str: String) -> Void {
// create a button
let b = UIButton()
// give it a default title
b.setTitle("Button", for: .normal)
// add it to our Dictionary
buttonsDict.updateValue(b, forKey: str)
}
Когда вы хотите создать кнопку:
createButton(named: "littleButton")
Когда вы хотите получить доступ к этой кнопке по имени :
// use guard to make sure you get a valid button reference
guard let btn = buttonsDict["littleButton"] else { return }
view.addSubview(btn)
Редактировать 2
Другой вариант, который, возможно, больше похож на ваш отредактированный вопрос:
// initialize empty array of views
var viewsArray: [UIView] = [UIView]()
override func viewDidLoad() {
super.viewDidLoad()
// create 5 views
for _ in 0..<5 {
create()
}
// ...
// then, somewhere else in your code
viewsArray[0].backgroundColor = .red
viewsArray[1].backgroundColor = .green
viewsArray[2].backgroundColor = .blue
viewsArray[3].backgroundColor = .yellow
viewsArray[4].backgroundColor = .orange
}
func create() -> Void {
// create a view
let v = UIView()
// add it to our array
viewsArray.append(v)
// add it as a subview
view.addSubview(v)
}
Как видите, вместо попытки ссылаться на созданные представления по имени (что вы не можете сделать), вы можете ссылаться на них по индексу массива.
Просто помните, что массивы основаны на нулях ... поэтому первый элемент добавлен в массив будет на [0]
не [1]
.