如何从任何 ViewController 访问 CustomNavigationController 的方法?
How to access methods of CustomNavigationController from any ViewController?
我创建了 CustomNavigationController 并添加了一些常用方法来向其添加 UIBarButtonItems。现在我想从我的各种 viewController 中调用这些方法。
所以我的问题是 - 如何从任何其他 viewController.[=13 调用属于 customNavigationController 的方法=]
我可以通过以下方式在 objectiveC 中实现此目的:
[(CustomNavigationController *)self.navigationController addLogoutButtonWithVC:self actionLogoutHandler:@selector(actionLogoutHandler)];
其中“addLogoutButtonWithVC”是属于 CustomNavigationController 的方法。
我在 Swift 的上面几行中做了一些尝试,但没有成功。
[注意 : 当嵌入时,我已经在情节提要中用 CustomNavigationController 替换了 NavigationController,所以所有的 navigationController 现在都只指向 CustomNavigationController]
"更新:CustomNavigationController 中的 addLogoutButtonWithViewController 和 actionLogoutHandler 声明"
func addLogoutButtonWithViewController(viewCont : UIViewController , selLogout : Selector) {
currentController = viewCont
var barButtonItem : UIBarButtonItem?
barButtonItem = UIBarButtonItem(image: UIImage(named: "Logout.png"), style: UIBarButtonItemStyle.plain, target: self, action: Selector("actionLogoutHandler"))
self.navigationController?.navigationItem.rightBarButtonItem = barButtonItem
}
@objc func actionLogoutHandler() {
print("Inside logout")
currentController?.navigationController?.popToRootViewController(animated: true)
}
非常感谢这方面的任何帮助。
试试这个:
guard let customNavigationController = self.navigationController as? CustomNavigationController else { return }
customNavigationController.addLogoutButtonWithVC()
它应该看起来像:
if let nav = self.navigationController as? CustomNavigationController {
nav.addLogoutButton(withVC: self,
actionLogoutHandler:#selector(CustomNavigationController .actionLogoutHandler(_:))
}
你应该试试我的代码如下。
您需要导航控制器的对象并用于在按钮目标中设置。
if let navigationcontroller = self.navigationController as? CustomNavigationController {
navigationcontroller.addLogoutButton(withVC: self,
actionLogoutHandler:#selector(navigationcontroller.actionLogoutHandler(_:))
}
@objc func actionLogoutHandler() {
print("Inside logout")
self.popToRootViewController(animated: true)
}
我创建了 CustomNavigationController 并添加了一些常用方法来向其添加 UIBarButtonItems。现在我想从我的各种 viewController 中调用这些方法。
所以我的问题是 - 如何从任何其他 viewController.[=13 调用属于 customNavigationController 的方法=]
我可以通过以下方式在 objectiveC 中实现此目的:
[(CustomNavigationController *)self.navigationController addLogoutButtonWithVC:self actionLogoutHandler:@selector(actionLogoutHandler)];
其中“addLogoutButtonWithVC”是属于 CustomNavigationController 的方法。
我在 Swift 的上面几行中做了一些尝试,但没有成功。
[注意 : 当嵌入时,我已经在情节提要中用 CustomNavigationController 替换了 NavigationController,所以所有的 navigationController 现在都只指向 CustomNavigationController]
"更新:CustomNavigationController 中的 addLogoutButtonWithViewController 和 actionLogoutHandler 声明"
func addLogoutButtonWithViewController(viewCont : UIViewController , selLogout : Selector) {
currentController = viewCont
var barButtonItem : UIBarButtonItem?
barButtonItem = UIBarButtonItem(image: UIImage(named: "Logout.png"), style: UIBarButtonItemStyle.plain, target: self, action: Selector("actionLogoutHandler"))
self.navigationController?.navigationItem.rightBarButtonItem = barButtonItem
}
@objc func actionLogoutHandler() {
print("Inside logout")
currentController?.navigationController?.popToRootViewController(animated: true)
}
非常感谢这方面的任何帮助。
试试这个:
guard let customNavigationController = self.navigationController as? CustomNavigationController else { return }
customNavigationController.addLogoutButtonWithVC()
它应该看起来像:
if let nav = self.navigationController as? CustomNavigationController {
nav.addLogoutButton(withVC: self,
actionLogoutHandler:#selector(CustomNavigationController .actionLogoutHandler(_:))
}
你应该试试我的代码如下。
您需要导航控制器的对象并用于在按钮目标中设置。
if let navigationcontroller = self.navigationController as? CustomNavigationController {
navigationcontroller.addLogoutButton(withVC: self,
actionLogoutHandler:#selector(navigationcontroller.actionLogoutHandler(_:))
}
@objc func actionLogoutHandler() {
print("Inside logout")
self.popToRootViewController(animated: true)
}