如何基于之前的 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 数据?