5

Swift でビュー コントローラーの階層をたどり、特定のクラスを見つけたいと思います。コードは次のとおりです。

extension UIViewController{

    func traverseAndFindClass<T : UIViewController>() -> UIViewController?{

        var parentController = self.parentViewController as? T?
                                    ^
                                    |
                                    |
        // Error: Could not find a user-defined conversion from type 'UIViewController?' to type 'UIViewController'
        while(parentController != nil){

            parentController = parentController!.parentViewController

        }

        return parentController

    }

}

これで、parentViewController プロパティがオプションの UIViewController を返すことはわかっていますが、神の名の下に Generic をオプションの型にする方法がわかりません。たぶん、ある種のwhere句を使用しますか?

4

3 に答える 3