swift 5 Помогите, пожалуйста, создать массив из 5 кнопок
Вся информация, что я находил, либо не работает, либо не подходит. И как обратиться к отдельному элементу массива?
var ButMass : [UIButton] = Array()
Весь код:
class ViewController: UIViewController {
@objc func Trans(ButCol:UIButton, sender: UIButton) {
for But in ButMass {
But.isHidden = true
}
}
var ButCol2 = UIButton()
var ButCol3 = UIButton()
var ButCol4 = UIButton()
var ButCol5 = UIButton()
var ButMassStart : [UIButton] = Array(
var ButMass : [UIButton] = Array()
var NamesForCol : [String] = ["fruits", "city", "clock"]
var CountNamesWords : [Int] = [4, 4, 3]
var DictCol : Dictionary = ["":""]
var DictCol1 : Dictionary = ["Apple":"Яблоко", "Pear":"Груша", "Garnet":"Гранат", "Grape":"Виноград", "House":"Дом", "Market":"Рынок", "Shop":"магазин", "Place":"Площадь", "Two":"Два", "Arrow":"Стрелка", "Eleven":"Одиннадцать", "Ten":"Десять"]
var ButWord = UIButton()
var DoubleButCheck : Bool = true
var heightOfTop = 50
var ButColSize : Int = Int(round(UIScreen.main.bounds.width / 2 - 30))
var ButColPlace2 : Int = Int(round(UIScreen.main.bounds.width / 2 + 10))
override func viewDidLoad() {
super.viewDidLoad()
var labelEnd = UILabel()
labelEnd.text = "Words is ending. Please, waiting new words"
labelEnd.center = self.view.center
while NamesForCol.isEmpty == false {
ButMass.append(ButMassStart[0])
ButMassStart[0].delete()
}
if NamesForCol.isEmpty != true {
labelEnd.isHidden = true
for ButCol in ButMass {
ButSet(ButCol: ButCol)
}
} else {
labelEnd.isHidden = false
}
ButWord.frame.size = CGSize(width: 260, height: 260)
ButWord.center = self.view.center
ButWord.isHidden = true
}
func ButSet(ButCol:UIButton) {
var ButColFrame = CGRect(x: 20, y: heightOfTop, width: ButColSize, height: ButColSize)
var ButColFrame2 = CGRect(x: ButColPlace2, y: heightOfTop, width: ButColSize, height: ButColSize)
if DoubleButCheck {
ButCol.frame = ButColFrame
ButCol.backgroundColor = .green
ButCol.titleLabel?.textAlignment = .center
ButCol.addTarget(self, action: #selector(Trans), for: .touchDown)
self.view.addSubview(ButCol)
DoubleButCheck = false
} else {
ButCol.frame = ButColFrame2
ButCol.backgroundColor = .green
ButCol.titleLabel?.textAlignment = .center
self.view.addSubview(ButCol)
DoubleButCheck = true
heightOfTop = heightOfTop + ButColSize + 50
}
}
}
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Вот минимальный пример на основе вашего кода - кнопки создаются в цикле.
Несколько замечаний касательно стиля программирования в Swift, которые у вас не соблюдены, что затрудняет чтение кода (руководство по стилю)
- имена переменных пишутся с маленькой буквы
- не нужно сокращать названия переменных и методов, пишите полностью, чтобы не приходилось гадать, что эти названия означают
- разделяйте логические блоки кода пустыми строками
class ViewController: UIViewController {
let buttonsColumnSize = Int(round(UIScreen.main.bounds.width / 2 - 30))
var buttons = [UIButton]()
override func viewDidLoad() {
super.viewDidLoad()
createButtons()
// access array mambers
buttons[1].setTitle("other title", for: .normal)
}
private func createButtons() {
var y = 50
for i in 0..<5 {
let button = UIButton(type: .system)
button.frame = CGRect(x: 20, y: y, width: buttonsColumnSize, height: buttonsColumnSize)
button.titleLabel?.textAlignment = .center
button.setTitle("Button \(i)", for: .normal)
// other setup ...
view.addSubview(button)
buttons.append(button)
y += buttonsColumnSize + 50
}
}
}