Swift 从继承的UIView类获取ViewController

Swift 从继承的UIView类获取ViewController,swift,swift4,Swift,Swift4,如果我有这个分机: extension UIResponder { var parentViewController: UIViewController? { return (self.next as? UIViewController) ?? self.next?.parentViewController } } 还有这个: extension UIView { var getParentViewController: UIViewController

如果我有这个分机:

extension UIResponder {
    var parentViewController: UIViewController? {
        return (self.next as? UIViewController) ?? self.next?.parentViewController
    }
}
还有这个:

extension UIView {
    var getParentViewController: UIViewController? {
        var parentResponder: UIResponder? = self
        while parentResponder != nil {
            parentResponder = parentResponder!.next
            if let viewController = parentResponder as? UIViewController {
                return viewController
            }
        }
        return nil
    }
}
如果我有这样一门课:

class MyClass: UIView {

    init() {
        print("\( parentViewController == nil  )")
        print("\( getParentViewController == nil  )")
    }
}
两个结果都是空的


如何从我的
UIView
获取已实现的
ViewController
,而不将其作为参数传递(直接从
视图
)?

您无法在其
init
中获取视图的下一个响应程序,因为它尚未设置。适当的时间应该在
didMoveToWindow

此外,在您自己的回答中,您说“…是获取uiviewcontroller的更简单方法”,好像一个应用程序只有一个
uiviewcontroller
实例,但每个非平凡的应用程序都有多个视图控制器