我看不到以下按钮为何引发错误:2014-08-13 00:29:57.674 view1 [26581:842344]-[view1.ViewController buttonAction:]:无法识别的选择器已发送至实例0x797731c0 2014-08-13 00:29:57.677 view1 [26581:842344] * 由于未捕获的异常’NSInvalidArgumentException’而终止应用程序,原因:’-[view1.ViewController buttonAction:]:无法识别的选择器已发送至实例0x797731c0’。任何帮助表示赞赏。非常感谢
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()方法中。将其移到外面,应该可以拿到。
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) } }