Как создать UIButton программно
Я пытаюсь создать UIView
программно. Как получить UIButton
с функцией действия в Swift?
Следующий код не получает никаких действий:
let btn: UIButton = UIButton(frame: CGRectMake(100, 400, 100, 50))
btn.backgroundColor = UIColor.greenColor()
btn.setTitle("Click Me", forState: UIControlState.Normal)
btn.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(buttonPuzzle)
Следующая функция выбора:
func buttonAction(sender: UIButton!) {
var btnsendtag: UIButton = sender
}
Ответы
Ответ 1
Вам просто не хватает UIButton
. Чтобы компенсировать это, измените его свойство tag
.
Вот вам ответ:
let btn: UIButton = UIButton(frame: CGRectMake(100, 400, 100, 50))
btn.backgroundColor = UIColor.greenColor()
btn.setTitle("Click Me", forState: UIControlState.Normal)
btn.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
btn.tag = 1 // change tag property
self.view.addSubview(btn) // add to view as subview
Swift 3.0
let btn: UIButton = UIButton(frame: CGRect(x: 100, y: 400, width: 100, height: 50))
btn.backgroundColor = UIColor.green
btn.setTitle(title: "Click Me", for: .normal)
btn.addTarget(self, action: #selector(buttonAction), forControlEvents: .touchUpInside)
btn.tag = 1
self.view.addSubview(btn)
Вот пример селекторной функции:
func buttonAction(sender: UIButton!) {
var btnsendtag: UIButton = sender
if btnsendtag.tag == 1 {
//do anything here
}
}
Ответ 2
Использование тега является хрупким решением. У вас есть представление, и вы создаете и добавляете кнопку в это представление, вам просто нужно сохранить ссылку на него: например
В своем классе сохраните ссылку на кнопку
var customButton: UIButton!
Создайте кнопку и установите ссылку
let btn = UIButton(frame: CGRect(x: 100, y: 400, width: 100, height: 50))
btn.backgroundColor = .greenColor()
btn.setTitle("Click Me", forState: .Normal)
btn.addTarget(self, action: #selector(MyClass.buttonAction), forControlEvents: .TouchUpInside)
self.view.addSubview(btn)
customButton = btn
Протестируйте этот экземпляр в функции действия
func buttonAction(sender: UIButton!) {
guard sender == customButton else { return }
// Do anything you actually want to do here
}
Ответ 3
Для addSubview и тега нужно btn.