Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在func中将类类型定义为param?_Ios_Swift_Generics - Fatal编程技术网

Ios 如何在func中将类类型定义为param?

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?

我想定义enclosure方法,它可以转到视图控制器 喜欢
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")