0

这是对此的后续问题:将 ViewController 分配给 Class,反之亦然

所以我有一个名为 SwipeStepViewController 的 ViewController,它是 ORKActiveStepViewController 的子类。在 SwipeStep 类中,我尝试用我的自定义覆盖默认 ViewController SwipeStepViewController

我试图覆盖该+stepViewControllerClass 方法并在 SwipeStep 类中返回我的自定义视图控制器:导入 ResearchKit

class SwipeStep:ORKActiveStep{

    override func stepViewControllerClass(){
        return SwipeStepViewController.self
    }

}

但这根本不起作用。我使用研究工具包,但我想这是一个普遍的快速问题。

4

3 回答 3

1

我对 ResearchKit 没有任何经验,但是在查看了Objective-C 代码之后,我相信您的方法应该是:

override class func stepViewControllerClass() -> AnyClass {
    return SwipeStepViewController.self
}

解释为什么你会收到错误:

方法不会覆盖其超类中的任何方法。

'SwipeStepViewController.Type' 不能转换为 '()'

看看你应该覆盖的方法(由 表示):+

+ (Class)stepViewControllerClass {
    return [ORKFormStepViewController class];
}

将此与您的方法进行比较:

override func stepViewControllerClass(){
    return SwipeStepViewController.self
}

这既不是类方法,也不是返回类,并且很清楚错误来自哪里。

于 2015-06-29T18:17:44.313 回答
1

派对迟到了,但我相信你的功能应该如下:

class SwipeStep : ORKActiveStep {
    static func stepViewControllerClass() -> SwipeStepViewController.Type {
        return SwipeStepViewController.self
    }
}
于 2015-08-05T07:53:45.087 回答
0

该函数应该返回一个类。查看 Swift 参考中关于 Metatype Types 的部分:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html

你的功能应该是

override func stepViewControllerClass(){
    return SwipeStepViewController.self
}
于 2015-06-29T16:31:09.593 回答