Why isn\'t this working:
self.backButton?.addTarget(self, action: Selector(\"backButtonPressed:\"), forControlEvents: .TouchUpInside)
// unrecognize
If I am not wrong you have declared your backButtonPressed
method inside another method like this:
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRectMake(150, 240, 75, 30))
button.setTitle("Next", forState: UIControlState.Normal)
button.addTarget(self, action: Selector("backButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
button.backgroundColor = UIColor.greenColor()
self.view.addSubview(button)
func backButtonPressed(sender:AnyObject?) {
print("Called")
}
// Do any additional setup after loading the view, typically from a nib.
}
This is wrong way.
Declare your method outside as shown in below code:
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRectMake(150, 240, 75, 30))
button.setTitle("Next", forState: UIControlState.Normal)
button.addTarget(self, action: Selector("backButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
button.backgroundColor = UIColor.greenColor()
self.view.addSubview(button)
}
func backButtonPressed(sender:AnyObject?) {
print("Called")
}
on swift you dont need to write selector anymore just
self.backButton?.addTarget(self, action: "backButtonPressed:", forControlEvents: .TouchUpInside)
Replace your action argument - selector like:
self.backButton?.addTarget(self, action: #selector(self. backButtonPressed(sender:)), for:. touchUpInside)
Since Swift 3, selector syntax has been changed as shown here.
The use of string literals for selector name is error-prone: there is no checking that the string is even a well-formed selector, much less that it refers to any known method, or a method of the intended class. Moreover, with the effort to perform automatic renaming of Objective-C APIs, the link between Swift name and Objective-C selector is non-obvious. By providing explicit "create a selector" syntax based on the Swift name of a method, we eliminate the need for developers to reason about the actual Objective-C selectors being used.