Подтвердить что ты не робот

Как создать 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
}
4b9b3361

Ответ 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.