Swift 是否从UI元素引用根视图?
如果我有任何Swift 是否从UI元素引用根视图?,swift,Swift,如果我有任何UI元素,在本例中是描述UIlabel 我知道这样做: description.superView 将引用DescriptionContainerView,但 是否可以引用根视图?从这些元素中 注意:我不想使用self.view,因为我想从另一个上下文引用它,其中self变量不是您所期望的您可以这样做(这不是好方法): 您可以这样添加递归函数: func getSuperView(mainView: Any) -> UIView? { if let view
UI元素
,在本例中是描述UIlabel
我知道这样做:
description.superView
将引用DescriptionContainerView,但
是否可以引用根视图?从这些元素中
注意:我不想使用
self.view
,因为我想从另一个上下文引用它,其中self变量不是您所期望的您可以这样做(这不是好方法):
您可以这样添加递归函数:
func getSuperView(mainView: Any) -> UIView? {
if let view = mainView as? UIView, view.tag == 1001 {
return view
} else {
return getSuperView(mainView: mainView)
}
}
您可以使用递归函数为UIView创建扩展,并检查当前superview是否不是UIWindow
extension UIView {
func getRootSuperView() -> UIView {
if let superview = self.superview, !(superview is UIWindow) {
return superview.getRootSuperView()
} else {
return self
}
}
}
self.superView.superView….superView
,但不建议这样做。使用闭包或委托来允许按钮(或者更确切地说,它的所有者)告诉UIViewController执行某些操作,怎么样?这会起作用,但我想创建一个不知道嵌套了多少视图的二元函数。然后给目标视图(主视图)一个标记并调用递归函数直到没有得到tag@RenzoCalla:请检查我的更新答案,我添加了递归函数以获得超级视图
extension UIView {
func getRootSuperView() -> UIView {
if let superview = self.superview, !(superview is UIWindow) {
return superview.getRootSuperView()
} else {
return self
}
}
}