2014-10-17 10 views
5

Sto utilizzando le dimensioni delle classi nel builder dell'interfaccia, definendo disegni leggermente diversi per dimensioni diverse.XCode 6 - iOS 8: controlla a livello di programmazione se è installata la vista

Una delle mie viste non è installata per una dimensione specifica. Funziona come previsto, ma ora mi piacerebbe essere programmaticamente in grado di dire se quella vista è installata o meno. Indipendentemente dal fatto che sia installato o meno, sembra che la vista non sia mai nulla, e non riesco a vedere alcun flag isInstalled da verificare.

Qual è il modo corretto per farlo?

risposta

4

Questa non è una grande soluzione, ma non ho ancora trovato uno migliore:.

Il docs stato che "Un oggetto di runtime per una vista disinstallato è ancora creato Tuttavia, la vista e tutte le relative i vincoli non vengono aggiunti alla gerarchia della vista e la vista ha una proprietà superview di nil ".

Quindi un test per una superview valida funziona come soluzione, ma ho scoperto che deve arrivare piuttosto tardi - in viewDidAppear. Le interviste sono ancora nul in viewWillAppear, per esempio.

-1

da Apple Documenti: Installing and Uninstalling Views for a Size Class

Un oggetto runtime per una vista disinstallato è ancora creato. Tuttavia, la vista e tutti i vincoli correlati non vengono aggiunti alla gerarchia della vista e la vista ha una proprietà superview di nil. Questo è diverso dall'essere nascosto. Una vista nascosta si trova nella gerarchia della vista insieme a tutti i vincoli correlati.

È possibile controllare valutando PossiblyUninstalledView.superView != nil. Se è vero, allora la classe è installata correttamente.

0

È possibile creare un'estensione a UIView e controllare se la vista ha una superview. Se è installato, restituirà true, se non lo è restituirà false.

extension UIView { 
    func isInstalled() -> Bool{ 
     return (self.superview != nil) ? true : false 
    } 
} 
Problemi correlati