Обновленный ответ:
Ваши кнопки находятся в пределах UIStackView
с.Существует один verticalStackView
, который содержит несколько horizontalStackView
с (каждый с одной строкой UIButton
с).
Создайте @IBOutlet
для verticalStackView
, а затем добавьте свои кнопки в класссвойство с именем allButtons
со следующим кодом в viewDidLoad
:
class ViewController: UIViewController {
@IBOutlet weak var verticalStackView: UIStackView!
var allButtons = [UIButton]()
override func viewDidLoad() {
super.viewDidLoad()
for case let horizontalStackView as UIStackView in verticalStackView.arrangedSubviews {
for case let button as UIButton in horizontalStackView.arrangedSubviews {
allButtons.append(button)
}
}
}
}
Оригинальный ответ:
Для создания массива всех UIButton
s с tag == 1
:
Используйте условное приведение as? UIButton
вместе с compactMap
, чтобы найти все кнопки в outerView.subviews
, а затем filter
, чтобы выбрать эти кнопки с помощью tag == 1
:
class ViewController: UIViewController {
@IBOutlet weak var outerView: UIView!
var allButtons: [UIButton] = []
override func viewDidLoad() {
super.viewDidLoad()
allButtons = outerView.subviews
.compactMap { $0 as? UIButton }
.filter { $0.tag == 1 }
}
}
Примечание: outerView
- это UIView
, который содержит кнопки.Создайте @IBOutlet
для этого представления, чтобы этот код работал.