如何获取最外层的父级UIView容器?

5

如何获取当前self UIView的祖先视图,我目前使用self.superview?.superview?.superview?.superview?.superview?.superview?

这看起来有点奇怪,除了使用上述语法外,还有其他方法可以获取主要的UIView吗?否则,如何使用guard避免此可选链接?


1
我只想将addSubview(mySubView)作为整个屏幕的覆盖层,当删除此子视图时,我希望我的先前视图保持不变(例如表视图滚动位置保持不变)。 - user4911813
1个回答

3

如果您正在从UIView自定义类中调用,可以使用guard来处理返回可选结果的方法。

private func outerMostParent(view:UIView)-> UIView? {
    guard let parent  = superview?.superview?.superview?.superview?.superview?.superview
           else{
        return nil
    }
    return parent
}

然后您可以执行以下操作:
self.outerMostParent(self)?.addSubview(yourSubview)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接