Ios 如何在func中将类类型定义为param?
我想定义enclosure方法,它可以转到视图控制器 喜欢Ios 如何在func中将类类型定义为param?,ios,swift,generics,Ios,Swift,Generics,我想定义enclosure方法,它可以转到视图控制器 喜欢 gotopage(currentController、TargetViewController、“TargetIdentity”) class func gotoPage(当前控制器:ViewController,targetControllerClass:T.类型,标识:字符串){ var mTargetViewController:targetControllerClass=currentController.storyboard?
gotopage(currentController、TargetViewController、“TargetIdentity”)
class func gotoPage(当前控制器:ViewController,targetControllerClass:T.类型,标识:字符串){
var mTargetViewController:targetControllerClass=currentController.storyboard?.InstanceEviewControllerWithiIdentifier(标识)为!targetControllerClass
currentController.showViewController(mTargetViewController,发件人:currentController)
}
这是我提到的另一个类似问题。
问题是,as!targetControllerClass
可能不正确。
生成时出错:“targetControllerClass”不是类型。
如何用类类型定义此方法?所有视图控制器都将继承自
UIViewController
,因为您可以按如下方式调整方法:
func gotoPage<T>(currentController: UIViewController, targetControllerClass: T.Type, identify: String) {
var newController = currentController.storyboard?.instantiateViewControllerWithIdentifier(identify) as! UIViewController
if newController is T {
currentController.showViewController(newController, sender: currentController)
}
}
gotoPage(self, targetControllerClass: UIPageViewController.self, identify: "test")
然而,在这里添加泛型并不是很有好处 为什么这是一个通用的?将要指定什么?可能从中复制。可能需要更改到协议公开init()方法的位置。我已更新我的问题。我已检查了该问题,但似乎不正确。什么是
selfsender
?这是一个类
方法,正确吗?奇怪的语法,带有泛型。targetControllerClass在这里似乎是externalParameterName,而不是localParameterName
gotoPage(self, targetControllerClass: UIPageViewController.self, identify: "test")