ios – 在导航堆栈中跳过添加视图控制器

ios – 在导航堆栈中跳过添加视图控制器,第1张

概述我有三个视图控制器嵌入导航控制器.我想从VC1到VC3,以便在VC3中,导航项的后退按钮可以将用户定向到VC2而不是VC1.我认为这应该是通过在VC3创建之后将VC2添加到VC1和VC3之间的导航堆栈或通过跳过第二个View Controller来完成的. 我试过这个: override func prepareForSegue(segue: UIStoryboardSegue, sender: 我有三个视图控制器嵌入导航控制器.我想从VC1到VC3,以便在VC3中,导航项的后退按钮可以将用户定向到VC2而不是VC1.我认为这应该是通过在VC3创建之后将VC2添加到VC1和VC3之间的导航堆栈或通过跳过第二个VIEw Controller来完成的.

我试过这个:

overrIDe func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {    if let IDentifIEr = segue.IDentifIEr {        switch IDentifIEr {        case "JumpToThirdVCSegue":            if let secondvc = segue.destinationVIEwController as? SecondVIEwController {                secondvc.performSegueWithIDentifIEr("ThirdVCSegue",sender: self)            }        default: break        }    }}

但我不能让它工作.当VIEw Controller尚未打开时,是否可能执行segue?

跳过视图控制器或在导航堆栈中添加视图控制器的最佳方法是什么?我希望这可以帮助你了解我正在做的事情:

解决方法 这样的事情应该有效:
self.navigationController?.pushVIEwController(vIEwController2,animated: true)    self.navigationController?.pushVIEwController(vIEwController3,animated: true)

编辑:

如果您希望推送第二个视图控制器,而不会被用户注意到,则在按下第三个视图控制器之后,您需要将其添加到导航控制器.这可以通过实现UINavigationControllerDelegate来实现.您可以将第二个视图控制器存储在变量中,并使用委托方法将其插入到导航控制器层次结构中.您的主视图控制器将如下所示:

class MyVIEwController: UIVIEwController,UINavigationControllerDelegate {    var vIEwControllerToInsertBelow : UIVIEwController?    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        self.navigationController?.delegate = self    }    func pushTwoVIEwControllers() {        if let vIEwController2 = self.storyboard?.instantiateVIEwControllerWithIDentifIEr("ID1"),let vIEwController3 = self.storyboard?.instantiateVIEwControllerWithIDentifIEr("ID2") { //change this to your IDentifIErs                self.vIEwControllerToInsertBelow = vIEwController2                self.navigationController?.pushVIEwController(vIEwController3,animated: true)        }    }    //MARK: - UINavigationControllerDelegate    func navigationController(navigationController: UINavigationController,dIDShowVIEwController vIEwController: UIVIEwController,animated: Bool) {        if let vc = vIEwControllerToInsertBelow {            vIEwControllerToInsertBelow = nil            let index = navigationController.vIEwControllers.indexOf(vIEwController)!            navigationController.vIEwControllers.insert(vc,atIndex: index)        }    }}
总结

以上是内存溢出为你收集整理的ios – 在导航堆栈中跳过/添加视图控制器全部内容,希望文章能够帮你解决ios – 在导航堆栈中跳过/添加视图控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1095628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存