Swift UIButtons的问题

时间:2015-12-19 13:42:46

标签: ios swift uibutton

我已经阅读过,并在Xcode 7中尝试了许多不同的方法来创建UIButton。但是,它们都没有奏效。下面是我尝试过的代码之一,但是我收到错误“预期声明”,我无法弄清楚缺少什么。我是新手,并不完全理解这一点!谢谢!

 btn: UIButton = UIButton(frame: CGRect(x: 100, y: 400, width: 100, height: 50))
    btn.backgroundColor = UIColor.redColor()
    btn.setTtitle("Click me",, forState: UIViewControlState.Normal)
    btn.addTarget(self, action: "button action:", forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(buttonPuzzle)
    func buttonAction(sender: UIButton!) {
        let btnsendtag: UIButton = sender
        if btnsendtag.tag == 1 {
            print("It worked!")

        } else {
            print("It didn't work")
        }

2 个答案:

答案 0 :(得分:1)

您的代码中存在许多拼写错误和不一致的内容。这是一个有效的修正版本:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let btn = UIButton(frame: CGRect(x: 100, y: 400, width: 100, height: 50))
        btn.tag = 1
        btn.backgroundColor = UIColor.redColor()
        btn.setTitle("Click me", forState: .Normal)
        btn.addTarget(self, action: "buttonAction:", forControlEvents: .TouchUpInside)
        self.view.addSubview(btn)
    }

    func buttonAction(sender: UIButton) {
        if sender.tag == 1 {
            print("It worked!")
        } else {
            print("It didn't work")
        }
    }

}

关键点:

  1. btn需要使用let声明。
  2. 操作名称为"buttonAction:"
  3. 按钮创建代码需要位于方法内,通常为viewDidLoad
  4. 需要在viewController的顶层声明buttonAction方法。

答案 1 :(得分:0)

您的操作应为buttonAction:,这是您尝试拨打的功能的名称。

另外,尝试使用@objc标记您的功能,以便UIKit可以看到它:

@objc func buttonAction(sender: UIButton) { 
    //do something
}

这可能起作用的原因是UIButton,在您的对象上调用respondsToSelector:performSector:。不从NSObject继承的Swift类直接没有respondsToSelector:的实现,因此您的函数不会被调用。