发送到实例的Swift无法识别的select器 – 我错过了什么?

2014-08-13 00:29:57.674 view1 [26581:842344] – [view1.ViewController buttonAction:]:无法识别的select器发送到实例0x797731c0 2014-08-13 00:29:57.677 view1 [26581:842344] *由于未捕获exception'NSInvalidArgumentException',原因:' – [view1.ViewController buttonAction:]:发送到实例0x797731c0的无法识别的select器“终止应用程序。 任何帮助赞赏。 非常感谢

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() func buttonAction(sender:UIButton) { println("Button tapped") } let windowsize = CGRect(x: 0, y: 0, width: 320, height: 480) let labelsize = CGRect(x: 0, y: 200, width: 140, height: 60) let myButton = UIButton(frame: CGRectMake(0, 0, 100, 100)) let myView = UIView(frame: windowsize) let viewwidth = myView.frame.width let spaceleft = (viewwidth - labelsize.width)/2 myView.backgroundColor = UIColor .blackColor() let myLabel = UILabel(frame:labelsize) myLabel.frame.origin.x = spaceleft myLabel.text = "Hello" myLabel.font = UIFont(name: "Chalkduster", size: 22) myLabel.textColor = UIColor .whiteColor() myLabel.textAlignment = NSTextAlignment.Center myLabel.backgroundColor = UIColor .redColor() //myView.addSubview(myButton) myView.addSubview(myLabel) self.view.addSubview(myView) let button = UIButton.buttonWithType(UIButtonType.System) as UIButton button.frame = CGRectMake(100, 100, 100, 50) button.backgroundColor = UIColor.greenColor() button.setTitle("Test Button", forState: UIControlState.Normal) button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) myView.addSubview(button) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

你的buttonAction目标嵌套在你的viewDidLoad()方法中。 把它移到外面,它应该是可达的。

 class ViewController: UIViewController { func buttonAction(sender:UIButton) { println("Button tapped") } override func viewDidLoad() { super.viewDidLoad() // ... let button = UIButton.buttonWithType(UIButtonType.System) as UIButton // ... button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) myView.addSubview(button) } }