这是一个后续问题:将ViewController分配给class,反之亦然
所以我有一个名为SwipeStepViewController的ViewController,它是从ORK1ctiveStepViewController派生而来的。在SwipeStep类中,我尝试用我的自定义SwipeStepViewController
覆盖默认的ViewController。
我试图覆盖+stepViewControllerClass
方法,并在SwipeStep类中返回我的自定义视图控制器:导入ResearchKit
class SwipeStep:ORKActiveStep{
override func stepViewControllerClass(){
return SwipeStepViewController.self
}
}
但这根本不起作用。我使用了researchkit,但我想这是一个普遍的快速问题。
我对ResearchKit没有任何经验,但在看了Objective-C代码后,我认为你的方法应该是:
override class func stepViewControllerClass() -> AnyClass {
return SwipeStepViewController.self
}
解释为什么会出现错误:
方法不重写其超类中的任何方法。
和
"SwipeStepViewController.Type"不能转换为"()"
看看您应该覆盖的类方法(由+
表示):
+ (Class)stepViewControllerClass {
return [ORKFormStepViewController class];
}
将此与您的方法进行比较:
override func stepViewControllerClass(){
return SwipeStepViewController.self
}
它既不是类方法,也不是返回类,而且很清楚错误来自哪里。
派对已经很晚了,但我认为你的功能应该如下:
class SwipeStep : ORKActiveStep {
static func stepViewControllerClass() -> SwipeStepViewController.Type {
return SwipeStepViewController.self
}
}
该函数应该返回一个class。看看Swift参考资料中关于Metatype Types:的部分
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html
你的功能应该是
override func stepViewControllerClass(){
return SwipeStepViewController.self
}