繁体   English   中英

如何将一个UIViewController类型传递给一个函数并在iOS Swift中输入一个变量?

[英]How to pass a Type of UIViewController to a function and type cast a variable in iOS Swift?

说明

我正在定义一个通用的API方法来处理我的应用程序中的弹出窗口。 是否可以将一种类型的UIViewController传递给函数,并将函数中的变量popOverVC类型转换为popUpVC的类型,即作为参数传递给函数。 Swift下的所有程序都很明显

参考代码

func showAsPopUp(currentVC: UIViewController,currentVCname: String, popupStoryboardID: String, popUpVC:UIViewController){
        let popUpVCType:AnyClass = type(of: popUpVC)
        let popOverVC = UIStoryboard(name: currentVCname, bundle: nil).instantiateInitialViewController(popupStoryboardID) as! popUpVCType
        currentVC.addChildViewController(popOverVC)
    }

这是使用泛型的好情况。

func showAsPopUp<T: UIViewController>(currentVC: UIViewController,currentVCname: String, popupStoryboardID: String, popUpVC: T.type) {
    let popOverVC = UIStoryboard(name: currentVCname, bundle: nil).instantiateViewController(withIdentifier: popupStoryboardID) as! T
    currentVC.addChildViewController(popOverVC)
}

不确定你的功能在这里,但这是泛型适合上述代码的方式。

上述方法的用法如下:

showAsPopUp(currentVC: UIViewController(), currentVCname: "asdsadv", popupStoryboardID: "asd", popUpVC: SomePopUpViewController.self)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM