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
实例,但每个非平凡的应用程序都有多个视图控制器