使用导航栏后退按钮返回主视图

Posted

技术标签:

【中文标题】使用导航栏后退按钮返回主视图【英文标题】:Going back to main view using the navigation bar back button 【发布时间】:2015-09-14 18:50:23 【问题描述】:

我的应用有一个主视图,其中有几个垂直排列的按钮。每个按钮都链接到不同的视图控制器。现在,当用户点击第一个按钮时,第一个视图控制器被打开。在第一个视图控制器中,有一个按钮可以直接将您带到第二个视图控制器。当我到达第二个视图控制器并按下后退按钮时,我被带回第一个视图控制器。然后我必须再按一次后退按钮才能进入主视图控制器。我该怎么做才能让应用程序从第二个视图控制器直接将我带到主视图控制器,而不是通过第一个视图控制器?提前致谢!

【问题讨论】:

How to go back to RootViewController from presentView controller?的可能重复 【参考方案1】:

你可以绕过 segue_unwind 回到主视图控制器。只需在按钮的 IBAction 中调用 performSegueWithIdentifier

斯威夫特

self.performSegueWithIdentifier("SegueIdentifierName", sender: self)

目标 C

[self performSegueWithIdentifier:@"SegueIdentifierName" sender:self];

这里也有类似的文章 What are Unwind segues for and how do you use them?

【讨论】:

我理解链接中问题的答案所说的一切,除了一件事。第一步是将按钮链接到出口。但是,我没有按钮。它是导航栏本身的后退按钮。那我该怎么办?【参考方案2】:

您可以使用您想要返回的视图控制器覆盖后退按钮操作,以在 navigationController 上调用 popToViewController()。

【讨论】:

我应该如何覆盖 UINavigationBar 后退按钮操作?【参考方案3】:

SO 中有很多关于这个 BUT 的答案:

[self.navigationController popToRootViewControllerAnimated:YES];

UIViewController *rootViewController = [self.navigationController.viewControllers firstObject];
[self.navigationController pushViewController:rootViewController animated:YES];

应该可以正常工作。

下一次,尝试先找到答案: How do I get the RootViewController from a pushed controller?

【讨论】:

我应该如何将它链接到 UINavigationBar 后退按钮? @KrishWadhwana 你不能这样做。相反,当您推送第二个视图控制器时,从堆栈中删除第一个视图控制器。 NSMutableArray *vc = [[self.navigationController viewControllers] mutableCopy]; [vc removeObjectAtIndex:1]; [self.navigationController setViewControllers:vc];【参考方案4】:

SWIFT 3.01

 self.performSegue(withIdentifier: "SegueIdentifierName", sender: self)

【讨论】:

以上是关于使用导航栏后退按钮返回主视图的主要内容,如果未能解决你的问题,请参考以下文章

如何设置导航栏的后退项

以编程方式创建的后退按钮未显示在导航栏中?

如何在iphone的子视图页面中创建带有导航返回按钮的导航栏

单击导航返回按钮,然后导航栏重叠相同的视图

UIPageViewController 更改导航栏后退按钮标题

导航视图控制器不显示后退按钮