覆盖导航控制器中的返回按钮

5

我有一个故事板,其中包含以下流程。为了导航到每个导航控制器,我使用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

从每个流程的视图控制器目标开始,我希望覆盖它的返回按钮,以便它可以返回到视图控制器初始页(主页)并释放其在内存中的对象。

有没有可能这样做?任何帮助都将不胜感激。谢谢。


我想覆盖它的返回按钮,使其返回到视图控制器初始状态。你指的是导航控制器的根控制器吗? - Kumar KL
是的,我想在每个流程中从视图控制器目标转到导航控制器1。 - Sonic Master
2个回答

13

首先,您需要使用其选择器将返回按钮替换为自定义的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)

可以了!谢谢!但是它在堆栈内存上的对象没问题吗? - Sonic Master
嗯,它并没有覆盖掉它的返回按钮,而是在左右创建了一个新的工具栏按钮?这没关系,但仍需要努力使其按钮看起来像“返回按钮”。 - Sonic Master
欢迎,伙计!愉快编码 :) 你可以使用自定义的barbutton项来创建。 - Nirav D

-1

在视图控制器目标中,使用以下代码来处理返回按钮的操作:

[self.navigationController popToRootViewControllerAnimated:YES];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接