如何使用popToViewController

如何使用popToViewController

我试图导航到另一个ViewController,但未通过segue连接,所以我对导航栏进行了编程,当您按名为“Start Over”的按钮时,我想要的是我要的ViewController出现,但是出现此错误:

“无法转换类型MemeEditorViewController.Type的值或预期参数类型UIViewController”

所以我不怎么处理。这是我的代码,也许您可​​以更好地帮助我。

override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title:"Start Over", style: .Plain, target: self, action: "startOver")
    }
    func startOver(){
        if let navigationController = self.navigationController {
            navigationController.popToViewController(MemeEditorViewController, animated: true)
        }
    }
}

最佳答案

如果只有一个viewcontroller类型的MemeEditorViewController,则可以找到控制器并以这种方式弹出该控制器:

let  vc =  self.navigationController?.viewControllers.filter({$0 is MemeEditorViewController}).first

self.navigationController?.popToViewController(vc!, animated: true)

否则您应该知道vc在堆栈中的位置,然后找到它:
let  vc =  self.navigationController?.viewControllers[1]

注意:当您按下viewcontroller时,navgationcontroller会将其存储在具有强引用的viewcontrollers数组中。您可以找到已推送到其中的viewcontroller实例。

希望对您有所帮助:D

关于ios - 如何使用popToViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37980570/

10-12 06:52