如果我有这个扩展名:
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);
)?
答案 0 :(得分:1)
您无法在其init
中获取该视图的下一个响应者,因为它尚未设置。适当的时间是didMoveToWindow
。
另外,在您自己的回答中,您说“...是获取uiviewcontroller的更简单方法”,就像应用程序只有一个UIViewController
实例一样,但每个非平凡的应用程序都有多个视图控制器。