Ios 导航 - 自定义后退按钮或从堆栈中删除视图控制器?

Posted

技术标签:

【中文标题】Ios 导航 - 自定义后退按钮或从堆栈中删除视图控制器?【英文标题】:Ios navigation - custom back button or removing viewcontriller from stack? 【发布时间】:2019-12-04 11:38:56 【问题描述】:

我是 ios 新手。我有几个视图控制器,我想要后退按钮让用户升级控制器。 Example.

但如果用户来自 gameOver 视图,后退按钮会将他送回 gameOver,我不希望这样的行为(我希望用户在第二级(游戏级)控制器被发送,如图所示)。在 android 上,我可以很容易地用鼠标为导航操作设置弹出行为。

在 ios 中执行相同操作的正确方法是什么?还是我必须创建自定义后退按钮并手动完成所有操作?

【问题讨论】:

如果您使用故事板(我会推荐),您可以使用展开转场:***.com/questions/12561735/… 感谢您的回答。是否可以使用带有后退按钮的展开转场?或者我必须为此做自定义按钮 这个问题的第二个答案说你可以把它作为默认的后退操作,他提供了一个可以运行的示例 github 项目。我从来没有尝试过。如果这不起作用,那么是的,您需要一个自定义按钮:***.com/questions/29236656/… 【参考方案1】:

使用 Swift 可以通过以下代码实现:

func popToViewController(_ specificViewController: Swift.AnyClass) 
 let viewControllers = self.navigationController!.viewControllers
 for eachViewController in viewControllers 
     if eachViewController.isKind(of: specificViewController) 
         self.navigationController!.popToViewController(eachViewController, animated: true)
         break;
     
 

用法:

self.popToViewController(gameLevelViewController.self)

【讨论】:

这并不能完全回答用户的问题。问题是如何使用默认的后退按钮来做到这一点

以上是关于Ios 导航 - 自定义后退按钮或从堆栈中删除视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:默认后退按钮显示在自定义左侧导航按钮上

iOS导航控制器中的后退按钮回调

UINavigationItem 标题视图的框架

带有自定义后退按钮的滑动手势冻结根视图控制器

按下后退按钮时的自定义动画 - iOS

自定义后退按钮的可访问性