0

これはこれに対するフォローアップの質問です: ViewController をクラスに割り当てるか、その逆を行います

だから私は SwipeStepViewController と呼ばれる ViewController を持っています。それは ORKActiveStepViewController のサブクラスです。SwipeStep クラスでは、デフォルトの ViewController をカスタムでオーバーライドしようとしていますSwipeStepViewController

メソッドをオーバーライドして+stepViewControllerClass 、SwipeStep クラス内でカスタム ビューコントローラーを返そうとしました: import ResearchKit

class SwipeStep:ORKActiveStep{

    override func stepViewControllerClass(){
        return SwipeStepViewController.self
    }

}

しかし、これはまったく機能しません。私はresearchkitを使用していますが、それは一般的な迅速な質問だと思います.

4

3 に答える 3

1

パーティーにはかなり遅れましたが、あなたの機能は次のようになるはずです。

class SwipeStep : ORKActiveStep {
    static func stepViewControllerClass() -> SwipeStepViewController.Type {
        return SwipeStepViewController.self
    }
}
于 2015-08-05T07:53:45.087 に答える
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 に答える
0

その関数はクラスを返す必要があります。メタタイプ型に関する Swift リファレンスのセクションを見てください。

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 に答える