Исправлено «использование неразрешенного идентификатора addTarget» при добавлении функции к событию нажатия кнопки - PullRequest
0 голосов
/ 07 марта 2019

Я создал UIButton программно, как показано ниже:

let buttons: [UIButton] = [UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))];

Теперь, если я попытаюсь добавить функцию к нему программным путем, как это:

[buttons[0] addTarget:self action:@selector(buttonClicked:)forControlEvents:UIControlEventTouchUpInside]

Я получаю сообщение о том, что addTarget не определен. Как мне это исправить?

Ответы [ 3 ]

1 голос
/ 07 марта 2019

вы пытаетесь использовать синтаксис Objective-C в swift, это совершенно неправильно, используйте ваш код как

 buttons.first?.addTarget(self, action: #selector(self.buttonClicked(_:)), for: .touchUpInside)

и обрабатывайте действие как

 @objc func buttonClicked( _ sender: UIButton) {
       print("buttonClicked Action Found")

}

Ссылка: Документ Apple для UIButton

0 голосов
/ 07 марта 2019

Прежде всего вы создаете [UIButton], который Array из UIButton, и это не одна кнопка.

Вы не можете создать Array из UIButton таким образом. Для этого вам понадобится цикл for, и вам необходимо соответственно обновить frame.

И вы можете создать один UIButton следующим образом:

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))

тогда вы можете добавить его в UIView следующим образом:

self.view.addSubview(button)

Без вышеуказанной строки ваша кнопка не будет отображаться на экране.

Далее, если вы хотите добавить действие к этой кнопке, вы можете сделать это, добавив следующую строку в код вашей кнопки:

button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)

и потребуется вспомогательный метод, который будет выполняться при нажатии кнопки.

@objc func buttonClicked(_ sender: UIButton) {
    //Perform your action when button is clicked.
}

И вам также нужно применить backgroundColor и setTitle к кнопке.

и ваш окончательный код будет выглядеть так:

let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
button.backgroundColor = UIColor.green
button.setTitle("Test Button", for: .normal)
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
self.view.addSubview(button)
0 голосов
/ 07 марта 2019

Изменяет следующий код:

{ ...

    buttons[0].addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)

... }

@objc func buttonClicked(_ button: UIButton) {

    button.setTitle("Clicked", for: .normal)
}
...