2012-04-03 15 views
12

Esiste un modo che ho potuto vedere una vista viene caricato senza controllare il codice sorgente di tale controller della vista (ad esempio, viewDidLoad, viewWillAppear, ecc)controllo se la visualizzazione viene caricato in fase di esecuzione

o come può Controllo in fase di esecuzione/dinamicamente se viene caricata una vista per catturare le visualizzazioni secondarie.

+0

ad esempio, voglio aspettare fino a quando viene caricato mio punto di vista e poi ottieni tutte le sottoview per quella vista e inizia a fare test su di esse usando qualcosa come passi e scenari KIF avendo le proprietà e le informazioni di quelle UIViews. Voglio aspettare che la vista sia caricata, ma come posso ottenere le proprietà di UIViews, perché non voglio usare solo le etichette di accessibilità – ramo

+0

caricando quando intendo ottenere tutte le sottoview della vista. Ho bisogno di avere queste informazioni prese da un altro lascia dire file di libreria e non nel codice sorgente del progetto. – ramo

risposta

35

Se si dispone di un'istanza di un controller della vista, si può chiedere è:

viewController.isViewLoaded 
+0

quindi dove dovrei controllare questo e controllare isViewLoaded. Quindi, viene chiamato l'applicationDidFinishLaunching e quindi viene chiamato il viewdidload della prima vista. dove posso controllare isViewLoaded – ramo

3

Non sono del tutto chiaro su cosa intendi con "caricato". A seconda della vostra definizione di "caricato" si potrebbe:

  • Controllare se la vista è nil (la definizione più ampia di carico, anche se questo dipenderà da qualcuno nilling la vista quando viene deallocato, affinché non si ottiene un EXC_BAD_ACCESS).

  • Controllare [view superview] per vedere se la vista ha una superview.

  • Verifica [view window] per vedere se una vista è parte di una finestra (un prerequisito per essere "a schermo")

  • Supponendo v'è un corrispondente UIViewController, query di proprietà isViewLoaded del controllore per vedere se è stata caricata una visione nella memoria. Ciò aiuta in particolare a visualizzare i problemi del ciclo di vita.

Probabilmente ci sono altre interpretazioni di "caricato" e altre cose che è possibile controllare, ma queste sono le prime cose fuori di testa.

0

Non sono sicuro del vostro caso d'uso, ma questo potrebbe essere d'aiuto se volete solo interrogare la gerarchia della vista.

- (UIView *)viewWithTag:(NSInteger)tag 
  1. Tag tutti i punti di vista che vi interessano, ad es. taggare su determinati punti di vista; "ImportantView1", "ImportantView2", ...

  2. Hai bisogno di un (genitore) al fine di effettuare la chiamata API sopra

  3. La chiamata sarà interrogare il (padre) e vista tutti subviews .

  4. Filtra le viste con il nome del tag personalizzato. (Se tag inizia con "ImportantView")

Problemi correlati