2012-04-03 18 views
12

Czy jest jakiś sposób, że mogę zobaczyć widok jest ładowany bez sprawdzania kodu źródłowego tego kontrolera widoku (np viewDidLoad, viewWillAppear, etc.)Sprawdź, czy widok jest ładowany w czasie wykonywania

lub w jaki sposób można Sprawdzam w czasie wykonywania/dynamicznie, jeśli jakikolwiek widok jest załadowany, aby pobrać subviews.

+0

np chcę czekać, aż mój widok jest załadowany, a następnie uzyskaj wszystkie subviews dla tego widoku i zacznij robić test na nich za pomocą czegoś takiego jak kroki KIF i scenariusze dzięki właściwościom i informacjom UIViews. Chcę poczekać aż widok zostanie załadowany, ale jak mogę uzyskać właściwości UIViews , ponieważ nie chcę po prostu użyć etykiet dostępności – ramo

+0

przez załadowany mam na myśli, kiedy możemy uzyskać wszystkie subviews widoku. Potrzebuję tych informacji pobranych z innego, powiedzmy, pliku biblioteki, a nie kodu źródłowego projektu. – ramo

Odpowiedz

35

Jeśli masz instancję kontrolera widoku, można go zapytać:

viewController.isViewLoaded 
+0

to gdzie powinienem to sprawdzić i sprawdzić isViewLoaded. Tak więc wywoływana jest applicationDidFinishLaunching, a następnie wywoływana jest viewdidload pierwszego widoku. gdzie mogę sprawdzić isViewLoaded – ramo

3

Nie do końca wiem, co masz na myśli przez "załadowany". W zależności od definicji „załadowany” można:

  • Sprawdź, czy widok jest nil (najszersza definicja załadowany, chociaż zależy to od kogoś nilling się pogląd, gdy jest zwalniane, aby nie dostaniesz EXC_BAD_ACCESS).

  • Sprawdź, czy widok ma widok superwizyjny.

  • Sprawdź [view window], aby zobaczyć, czy widok jest częścią okna (warunek bycia „na ekranie”)

  • Zakładając istnieje odpowiednia UIViewController, kwerendy sterownika isViewLoaded właściwość, aby zobaczyć, czy jest on załadowany widok do pamięci. Pomaga to w szczególności w rozwiązywaniu problemów związanych z cyklem życia.

Prawdopodobnie istnieją inne interpretacje "załadowanych" i innych rzeczy, które można sprawdzić, ale to są pierwsze rzeczy z mojej głowy.

0

Nie jestem do końca pewien, czy chodzi o przypadek użycia, ale może to pomóc, jeśli chcesz zapytać o hierarchię widoków.

- (UIView *)viewWithTag:(NSInteger)tag 
  1. Tag wszystkie poglądy są Państwo zainteresowani, ex. tag na niektórych widokach zainteresowania; "ImportantView1", "ImportantView2" ...

  2. Musisz (jednostka dominująca), aby uczynić powyżej wywołanie API

  3. wywołanie będzie kwerendy (rodzic) widok i wszystkie subviews .

  4. Filtruj widoki według niestandardowej nazwy tagu. (Jeśli tag zaczyna się od „ImportantView”)

Powiązane problemy