2014-10-17 2 views
5

Я использую размеры классов в построителе интерфейса, определяя несколько разные конструкции для разных размеров.XCode 6 - iOS 8: программно проверить, установлен ли вид

Один из моих представлений не установлен для определенного размера. Это работает так, как ожидалось, но теперь я хотел бы программным образом определить, установлено ли это представление или нет. Независимо от того, установлен он или нет, похоже, что представление никогда не равно нулю, и я не могу увидеть какой-либо флаг isInstalled для проверки.

Каков правильный способ сделать это?

ответ

4

Это не большое решение, но я не нашел лучше один еще:.

docs утверждают, что «Объект выполнения для неустановленного зрения все еще создается Однако, вид и любые связанные с ним ограничения не добавляются в иерархию представлений, а представление имеет свойство супервизора nil ".

Таким образом, проверка действительного наблюдения работает как решение, но я обнаружил, что он должен прийти довольно поздно - в viewDidAppear. Например, супервизоры по-прежнему ноль в viewWillAppear.

-1

От компании Apple Docs: Installing and Uninstalling Views for a Size Class

Объект выполнения для неустановленного зрения еще создан. Однако представление и любые связанные ограничения не добавляются в иерархию представлений, и представление имеет свойство супервизора nil. Это отличается от скрытия. Скрытое представление находится в иерархии представлений, равно как и любые связанные ограничения.

Вы можете проверить, оценивая PossiblyUninstalledView.superView != nil. Если это так, то класс правильно установлен.

0

Вы можете сделать расширение для UIView и проверить, есть ли представление с надписью. Если он установлен, он вернет true, если он не вернет false.

extension UIView { 
    func isInstalled() -> Bool{ 
     return (self.superview != nil) ? true : false 
    } 
} 
Смежные вопросы