Ссылка на корневой вид из элемента интерфейса? - PullRequest
0 голосов
/ 14 сентября 2018

Если у меня есть UI element, в данном случае описание UIlabel

enter image description here

Я знаю, что делает:

description.superView

будет ссылаться на DescriptionContainerView, но

Можно ли ссылаться на корневой вид? из этих элементов ,

Примечание: я не хочу использовать self.view, потому что я хочу сослаться на это из другого контекста, где переменная self не соответствует ожидаемой вами

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы можете создать расширение для UIView с помощью рекурсивной функции и проверить, что текущее суперпредставление не является UIWindow.

extension UIView {
   func getRootSuperView() -> UIView {
        if let superview = self.superview, !(superview is UIWindow) {
            return superview.getRootSuperView()
        } else {
            return self
        }
    }
}
0 голосов
/ 14 сентября 2018

Вы можете сделать это следующим образом (это не очень хороший подход):

description.superView.superView.superView

Вы можете добавить рекурсивную функцию следующим образом:

func getSuperView(mainView: Any) -> UIView? {
        if let view = mainView as? UIView, view.tag == 1001 {
            return view
        } else {
           return getSuperView(mainView: mainView)
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...