覆盖导航控制器中的后退按钮
Override Back Button In Navigation Controller
我有这些流程的故事板。我正在使用 SWRevealViewController 导航到每个导航控制器。
- Navigation Controller 1 --> View Controller Initial (Home) --> View Controller Target
- Navigation Controller 2 --> View Controller X --> View Controller Y --> View Controller Target
- Navigation Controller 3 --> View Controller M --> View Controller Target
从每个流程的 View Controller Target,我想覆盖它的后退按钮,以便它可以返回到 View Controller Initial(Home) 并在内存中释放它的对象。
有没有办法做到这一点?任何帮助,将不胜感激。谢谢。
对于视图控制器目标中的后退按钮操作,请使用:
[self.navigationController popToRootViewControllerAnimated:YES];
首先,您需要将后退按钮替换为带选择器的自定义后退按钮。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(self.backToInitial(_:)))
func backToInitial(sender: AnyObject) {
self.navigationController?.popToRootViewControllerAnimated(true)
}
如果你是 运行 swift 3.0
那么 selector
语法是这样的。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(self.backToInitial(sender:)))
编辑: 对于 SWRevealViewController
尝试这样。
let revealController = self.revealViewController;
let vc = self.storyboard?.instantiateViewControllerWithIdentifier("InitialViewController") as! InitialViewController
let navigationController = UINavigationController(rootViewController: vc)
revealController.pushFrontViewController(navigationController, animated:true)
我有这些流程的故事板。我正在使用 SWRevealViewController 导航到每个导航控制器。
- Navigation Controller 1 --> View Controller Initial (Home) --> View Controller Target
- Navigation Controller 2 --> View Controller X --> View Controller Y --> View Controller Target
- Navigation Controller 3 --> View Controller M --> View Controller Target
从每个流程的 View Controller Target,我想覆盖它的后退按钮,以便它可以返回到 View Controller Initial(Home) 并在内存中释放它的对象。
有没有办法做到这一点?任何帮助,将不胜感激。谢谢。
对于视图控制器目标中的后退按钮操作,请使用:
[self.navigationController popToRootViewControllerAnimated:YES];
首先,您需要将后退按钮替换为带选择器的自定义后退按钮。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(self.backToInitial(_:)))
func backToInitial(sender: AnyObject) {
self.navigationController?.popToRootViewControllerAnimated(true)
}
如果你是 运行 swift 3.0
那么 selector
语法是这样的。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .Done, target: self, action: #selector(self.backToInitial(sender:)))
编辑: 对于 SWRevealViewController
尝试这样。
let revealController = self.revealViewController;
let vc = self.storyboard?.instantiateViewControllerWithIdentifier("InitialViewController") as! InitialViewController
let navigationController = UINavigationController(rootViewController: vc)
revealController.pushFrontViewController(navigationController, animated:true)