class NavigationCloseButton: UIButton {
var actionHandler: (() -> Void)?
}
extension UIViewController {
func createNavigationClose(actionHandler: (() -> Void)? = nil) {
let button = NavigationCloseButton(type: .custom)
button.frame = CGRect(0, 0, 44, 35)
button.actionHandler = actionHandler
button.setImage(UIImage(named: "CloseImage"), for: .normal)
button.addTarget(self, action: #selector(naviClose(_:)), for: .touchUpInside)
let backButtonItem:UIBarButtonItem = UIBarButtonItem(customView: button)
navigationItem.leftBarButtonItem = backButtonItem
}
@objc func naviClose(_ sender: NavigationCloseButton) {
sender.actionHandler?()
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
createNavigationClose { [weak self] in
guard let self = self else { return }
self.dismiss(animated: true)
}
}
}