Button action #selector not call @objc function

cHello
I have a code example look like this



This is my controller and i want to write my view code other class




class TimerController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let _ = TimerView(self)
    }
}


This is my second class which my view create in there

class TimerView {

    var controller: TimerController?


    init(_ controller: TimerController) {
        self.controller = controller;
        self.setupLayout();
    }

    lazy var navBar: UINavigationBar = {
        let uiNavBar = UINavigationBar();
        uiNavBar.items = [self.navItem];
        uiNavBar.translatesAutoresizingMaskIntoConstraints = false;
        return uiNavBar;
    }();


    lazy var navItem: UINavigationItem = {
        let uiNavItem = UINavigationItem();
        uiNavItem.rightBarButtonItem = self.reloadButton;
        return uiNavItem;
    }();

    lazy var reloadButton: UIBarButtonItem = {
        let uiBarButtonItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: #selector(playCounter))
        return uiBarButtonItem;
    }();
}
extension TimerView {

    func setupLayout() -> Void {
        controller?.view.addSubview(navBar)
        NSLayoutConstraint.activate([
            navBar.leadingAnchor.constraint(equalTo: (controller?.view.leadingAnchor)!),
            navBar.trailingAnchor.constraint(equalTo: (controller?.view.trailingAnchor)!),
            navBar.topAnchor.constraint(equalTo: (controller?.view.topAnchor)!),
        ])
    }

    @objc func playCounter(name: UIBarButtonItem) -> Void {
        print("Test")
    }
}


playCounter method not called inside TimerView class but if i change playCounter method to TimerController class then method work What is in there problem?