如何以编程方式创建UIButton

Bhu*_*rma 20 uibutton swift

我正在尝试以编程方式构建UIViews .如何在Swift中使用动作功能?UIButton

以下代码不会执行任何操作:

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)
Run Code Online (Sandbox Code Playgroud)

以下选择器功能是:

func buttonAction(sender: UIButton!) {
    var btnsendtag: UIButton = sender
}
Run Code Online (Sandbox Code Playgroud)

Wan*_*ery 34

你只是错过了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
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

这是一个示例选择器函数:

func buttonAction(sender: UIButton!) {
    var btnsendtag: UIButton = sender
    if btnsendtag.tag == 1 {            
        //do anything here
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果sender.tag == 1 {...} (2认同)

Abi*_*ern 8

使用标签是一个脆弱的解决方案.您有一个视图,并且您正在创建该按钮并将其添加到该视图,您只需要保留对它的引用:例如

在您的班级中,保留对按钮的引用

var customButton: UIButton!
Run Code Online (Sandbox Code Playgroud)

创建按钮并设置参考

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
Run Code Online (Sandbox Code Playgroud)

在动作函数中针对此实例进行测试

func buttonAction(sender: UIButton!) {
    guard sender == customButton else { return }

    // Do anything you actually want to do here
}
Run Code Online (Sandbox Code Playgroud)