从继承的UIView类获取ViewController

时间:2018-04-25 23:02:18

标签: swift swift4

如果我有这个扩展名:

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  )")
    }
}

如果我有这样的课程:

ViewController

两个结果均为空。

如何从我的UIView获取已实施的view而不将其作为参数传递(直接来自var express = require('express'); var app = express(); app.get('/', function (req, res){ res.sendfile(__dirname + './../web/index.html') //res.send('Hello there, world!\n'); }); var port = 9000; app.listen(port); console.log('Listening on port', port); )?

1 个答案:

答案 0 :(得分:1)

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

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