Tried this but only works for UIButton:
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
Swift 5:
Extract to extensions:
extension UIBarButtonItem {
static func nextBtn(target: AnyObject, action: Selector) -> UIBarButtonItem {
let title = "Next"
return button(title: title, target: target, action: action)
}
private static func button(title: String, target: AnyObject, action: Selector) -> UIBarButtonItem {
return UIBarButtonItem(title: title, style: .done, target: target, action: action)
}
}
Call in code:
navigationItem.rightBarButtonItem = .nextBtn(target: self, action: #selector(rightBarButtonAction))
Action:
@objc func rightBarButtonAction() {
Swift.print("Button tapped!")
}
Pretty easy to add new buttons to this factory.