如何基于之前的 ViewController 创建导航栏后退按钮

Posted

技术标签:

【中文标题】如何基于之前的 ViewController 创建导航栏后退按钮【英文标题】:How to create navigation bar back button based on previous ViewController 【发布时间】:2016-01-23 12:28:41 【问题描述】:

对于 ios 开发,我的情况很奇怪,而且也有点新手。为了清楚起见,ViewController(vA) 使用字母表,NavigationController(n1) 使用数字。假设我有一个嵌入在导航控制器“1”中的 ViewController“A”。下面我试图显示导航。 vB-> n1 -> vA vB-> n2 -> vC -> vD -> vA 我在vB 上有一个条形按钮项,它将我重定向到vA。由于某些要求,我使用当前模态segue 从vB 转到'vA',所以vA 上没有任何后退按钮,而对于第二种情况,由于push segue,我得到了默认的后退按钮。在第一种情况下,为了向后导航,我添加了一个条形按钮项目并关闭按钮操作视图,如下所示。

[self dismissViewControllerAnimated:YES completion:^ NSLog(@"controller dismissed"); ];

它在第一个条件下工作正常,但是在第二个条件下导航,当出现 vA 时,我得到了我的自定义后退按钮而不是默认的后退按钮,这很明显,通过单击它我得到了 redirected to vB 而我的要求是go back on vD。那么我该怎么做,如果coming from vD 隐藏自定义后退栏按钮。我正在考虑的解决方案是获取以前的 ViewController,并基于该创建自定义按钮。但我不确定,这是一个正确的方法。如果有任何其他简单的方法可以做到这一点,请指导我。

- (void)viewDidLoad 
if(viewController isEqualTo @" vB")

 //create custom back bar button




【问题讨论】:

【参考方案1】:

有两个想法 - 首先,您可以将 vA 子类化。 vASubclass 创建其自定义后退按钮并调用 -dismissViewController。 (super) vA 是你压栈的东西。

或者,在 vB 的 -prepareForSegue 中,检查 segue 标识符,如果是模态的,则将自定义按钮添加到 vA 那里,并设置目标操作以从 vB 中调用 -dismissViewController。

【讨论】:

使用第二种方法,下次尝试第一种并更新。

以上是关于如何基于之前的 ViewController 创建导航栏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ARKit / swift ViewController 创建 React Native 组件?

在实例化 ViewController 之前更改/修改运行时用户定义的属性

如何让 PageViewController 显示不同的 ViewController

Swift:如何在实例化 viewController 之前加载 Firebase 数据?

Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置

segue 如何创建目标 ViewController?