Я добавляю ярлыки и кнопки в TextView динамически. Это обусловлено циклическим перебором массивов, содержащих имена меток, имена кнопок и имена функций кнопок. Для краткости и простоты я изменил здесь код, чтобы использовать жестко закодированные индексы вместо al oop, и я не включил функции создания меток и кнопок. Ярлыки созданы просто отлично. Первая кнопка также создается просто отлично, поскольку я указываю Button1Clicked в качестве аргумента #selector. Вторая кнопка создается правильно, только если я укажу Button2Clicked в качестве аргумента #selector. Если я пытаюсь ссылаться на массив в аргументе кнопки #selector, я получаю сообщение об ошибке компилятора «Аргумент« #selector »не относится к методу, свойству или инициализатору« @ obj c »». Предполагая, что можно использовать массив, содержащий имя функции @ obj c, в качестве аргумента для #selector, кто-то может предоставить мне соответствующий синтаксис? Я использую Swift 5 и Xcode 11.2. Заранее благодарю за помощь.
@objc func Button1Clicked(sender: UIButton) {
print("You pressed button 1")
}
@objc func Button2Clicked(sender: UIButton) {
print("You pressed button 2")
}
.
.
.
var labelNames = [UILabel]()
let Label1:UILabel = UILabel()
let Label2:UILabel = UILabel()
labelNames = [Label1, Label2]
var buttonNames = [UIButton]()
let Button1:UIButton = UIButton()
let Button2:UIButton = UIButton()
buttonNames = [Button1, Button2]
let buttonSelectorNames = ["Button1Clicked", "Button2Clicked"]
configureLabel(labelNameIn: labelNames[0],
textIn: "aaaaa",
textColorIn: appColorWhite,
backgroundColorIn: appColorBlue,
yPositionIn: 0)
statusTextview.addSubview(labelNames[0])
configureLabel(labelNameIn: labelNames[1],
textIn: "-- bbbbb",
textColorIn: appColorWhite,
backgroundColorIn: appColorBlue,
yPositionIn: 25)
statusTextview.addSubview(labelNames[1])
configureButton(buttonNameIn: buttonNames[0],
xPositionIn: 0,
yPositionIn: 50,
textIn: "B1",
textColorIn: appColorBlack,
backgroundColorIn: appColorBrightGreen,
textViewIn: statusTextview)
buttonNames[0].addTarget(self,
action: #selector(Button1Clicked),
for: .touchUpInside)
statusTextview.addSubview(buttonNames[0])
configureButton(buttonNameIn: buttonNames[1],
xPositionIn: 100,
yPositionIn: 50,
textIn: "B2",
textColorIn: appColorBlack,
backgroundColorIn: appColorBrightGreen,
textViewIn: statusTextview)
buttonNames[1].addTarget(self,
action: #selector(buttonSelectorNames[1]),
for: .touchUpInside)
statusTextview.addSubview(buttonNames[1])