我正在使用下面的代码以编程方式在视图之间进行转换,并且重复很多次,因此我想创建一个全局函数,但似乎无法掌握它。
该代码在ViewController类中调用时有效,所以我想问题是我的函数不知道我想在哪个VC上调用navigationController.pushViewController,但是我也不知道如何引用VC作为传递给函数的参数,或者更好的方法是使用.self之类的东西来调用当前的VC类。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ExamplesControllerVC")
self.navigationController?.pushViewController(vc, animated: true)
如果我尝试在单独的文件中将其作为函数运行,则会出现以下错误:
使用未解决的标识符“ navigationController”;您是说'UINavigationController'吗?
所以我想创建和调用的函数是这样的:
showVC("ExamplesControllerVC")
有什么想法吗?
答案 0 :(得分:2)
此代码所具有的任何功能都需要更新以采用UIViewController
类型的参数。
func showMain(on vc: UIViewController) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ExamplesControllerVC")
vc.navigationController?.pushViewController(vc, animated: true)
}
现在您可以将其称为:
showMain(on: someViewController)
或将此功能添加到UIViewController
的扩展名中,然后使用self
就可以了。
extension UIViewController {
func showMain() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ExamplesControllerVC")
self.navigationController?.pushViewController(vc, animated: true)
}
}