2015-12-17 8 views
4

Как я могу получить грандиозную бабуля родительское представление о моей текущей selfUIView, в настоящее время я использую self.superview?.superview?.superview?.superview?.superview?.superview?Как получить внешний родительский контейнер UIView?

Это выглядит немного странно, вместо того, чтобы использовать выше синтаксис их любым другим способом, чтобы получить главный UIView иначе, как я могу предотвращая эту дополнительную цепочку с помощью guard?

+0

Можете ли вы поделиться почему? –

+1

Я просто хочу 'addSubview (mySubView)' в качестве наложения всего экрана и при удалении этого подзаголовка я хочу, чтобы мой предыдущий вид оставался таким же (например, прокручиваемое положение таблицы выглядело таким же) –

ответ

2

Вы можете использовать guard с помощью метода, который возвращает необязательный параметр (я предполагаю, что вы вызываете это из пользовательского класса UIView).

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) 
+0

Спасибо, это прекрасно. –