覆盖导航控制器的后退按钮

问题描述 投票:3回答:3

我有故事板与这些流程。我使用的是 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

查看控制器目标 在每个流程中,我想覆盖它的后退按钮,这样它就可以返回到 查看控制器初始化(主页 并在内存上释放其对象。

有什么办法可以做到这一点吗?希望得到任何帮助。谢谢你的帮助。

ios swift uinavigationcontroller swrevealviewcontroller
3个回答
11
投票

首先,你需要用自定义的Back BarButton与它的选择器替换你的后退按钮。

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)

0
投票

对于View Controller Target中的backButton动作,使用这个。

[self.navigationController popToRootViewControllerAnimated:YES];
© www.soinside.com 2019 - 2024. All rights reserved.