首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何回到我的第一个视图控制器

问如何回到我的第一个视图控制器
EN

Stack Overflow用户
提问于 2022-09-12 10:43:35
回答 2查看 53关注 0票数 0

假设我有3个视图控制器VC1、VC2和VC3。第一个视图控制器是VC1,从这里我将转到VC2,从VC2到VC3。问题是我如何从VC3 -> VC1 not VC3 -> VC2 -> VC1回来,同时使用回推。

注意:

这是关于向后滑动的问题,而不是手动单击Back Button。

这是我的密码:

代码语言:javascript
复制
class MyNavigationController: UINavigationController {
    
    override init(rootViewController: UIViewController) {
        super.init(rootViewController: rootViewController)
        self.delegate = self
        interactivePopGestureRecognizer?.delegate = self
        navigationBar.isTranslucent = false
        view.backgroundColor = .white
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    @available(*, unavailable)
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // do something
    }
    
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        super.pushViewController(viewController, animated: animated)
        interactivePopGestureRecognizer?.isEnabled = false
    }
    
    func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        interactivePopGestureRecognizer?.isEnabled = true
    }
}

extension PKNavigationController: UINavigationControllerDelegate, UIGestureRecognizerDelegate {
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        // Do Something
    }
    
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
}
EN

回答 2

Stack Overflow用户

发布于 2022-09-12 11:17:28

在VC3中,每当您想要返回时,请使用:

代码语言:javascript
复制
navigationController?.popToRootViewController(animated: true)
票数 1
EN

Stack Overflow用户

发布于 2022-09-12 12:40:56

现在还不完全清楚你想从你的问题中得到什么,但如果你的意思是想让后退按钮和滑动手势从VC3返回到vc1,就好像VC2不在导航堆栈中一样:在VC2按下VC3之后,使用UINavigationController's setViewControllers:animated: to [vc1, vc3],动画为false。那么导航堆栈和后退按钮上只有两个vc,然后滑动手势都会返回到VC1。

当然,对于用户来说,这可能是一种奇怪的体验,因为这不是导航堆栈的工作方式( vc2在哪里消失了?),所以您最好使用VC1推出某种容器VC,即在VC2和VC3之间过渡而不按下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73688029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档