在Swift中返回新的ViewController



这是一个后续问题:将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
}

相关内容

  • 没有找到相关文章

最新更新