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?