繁体   English   中英

如何强制后退按钮转到第一个视图控制器(快速)

[英]How to Force Back Button to Go to First View Controller (swift)

我有导航控制器中嵌入的几个视图控制器的故事板。 由于故事板后期视图中的导航逻辑,后退按钮(位于左上角,导航栏中)不会返回到第一个视图。 我想知道在哪里以及如何更改第二个视图的后退按钮的这种行为。 欣赏任何想法,例子。

在此输入图像描述

当然,您可以实现自定义后退按钮。 但是还有一种很好的方法可以继续使用默认按钮。

在调用super.viewWillDisappear()之前,只需检查当前viewController是否仍在viewWillDisappear的导航堆栈中。 如果不是,则按下后退按钮。 然后你可以做popToRootViewControllerAnimated

override func viewWillDisappear(animated: Bool) {
    if (navigationController?.viewControllers)!.contains(self) {
        // back button was pressed
        self.navigationController?.popToRootViewControllerAnimated(animated)
    }
    super.viewWillDisappear(animated)
}

自定义后退按钮似乎是最佳解决方案。 你的action方法中的代码在swift中如下所示:

self.navigationController?.popToRootViewControllerAnimated(true)

//如果你不想让它动画,只需将true更改为false。

我希望这有帮助(如果你还没有找到答案)。 干杯!

如果您打算说:阻止后退按钮导航到上一个控制器并移动到第一个视图控制器:您可以通过创建自定义后退按钮来执行此操作 - 将故事板中的按钮拖到导航栏的左上角,然后将其连接到你的视图控制器。 在自定义后退按钮的选择器中写入:

[self.navigationController popToRootViewControllerAnimated:YES]

假设您有一个视图控制器堆栈,如:VC1> VC2> VC3,并且您想在回到VC3时返回VC1,那么您可以在VC2中设置此代码:

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:(UIBarButtonItemStylePlain) target:self action:@selector(backToVC1)]];

然后,总是在VC2中:

- (void)backToVC1
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM