我试图导航到另一个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/