【问题标题】:How to create navigation bar back button based on previous ViewController如何基于之前的 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

}

}

【问题讨论】:

    标签: ios objective-c uiviewcontroller uinavigationcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 使用第二种方法,下次尝试第一种并更新。
    猜你喜欢
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多