return Swift 中的新 ViewController

return new ViewController in Swift

这是对此的后续问题:

所以我有一个名为 SwipeStepViewController 的 ViewController,它是 ORKActiveStepViewController 的子class。在 SwipeStep class 中,我尝试用我的自定义 SwipeStepViewController.

覆盖默认值 ViewController

我试图覆盖 +stepViewControllerClass 方法和 return 我的自定义 Viewcontroller 在 SwipeStep class 中: 导入 ResearchKit

class SwipeStep:ORKActiveStep{

    override func stepViewControllerClass(){
        return SwipeStepViewController.self
    }

}

但这根本不起作用。 我使用 researchkit,但我想这是一个一般性的 swift 问题。

那个函数应该return一个Class。查看 Swift 参考中有关元类型的部分:

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

你的函数应该是

override func stepViewControllerClass(){
    return SwipeStepViewController.self
}

我没有任何使用 ResearchKit 的经验,但是看了 Objective-C code 我相信你的方法应该是:

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

解释您收到错误的原因:

Method does not override any method from its superclass.

and

'SwipeStepViewController.Type' is not convertible to '()'

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

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

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

override func stepViewControllerClass(){
    return SwipeStepViewController.self
}

这既不是 class 方法,也不是 returns class 并且很清楚错误的来源。

来晚了,但我相信你的功能应该如下:

class SwipeStep : ORKActiveStep {
    static func stepViewControllerClass() -> SwipeStepViewController.Type {
        return SwipeStepViewController.self
    }
}