2012-04-03 81 views
12

有什麼辦法,我可以看到一個視圖加載不檢查視圖控制器的源代碼(例如,viewDidLoad中,viewWillAppear中,等)檢查視圖在運行時加載

或如何我在運行時/動態檢查是否加載了任何視圖來獲取子視圖。

+0

例如,我想等到我的看法是加載,然後獲取該視圖的所有子視圖,並通過具有這些UIViews的屬性和信息,使用類似KIF步驟和場景的方式開始對它們進行測試。 我想等待視圖加載,但然後我怎麼能得到 UIViews的屬性,因爲我不想只是使用輔助功能標籤 – ramo 2012-04-03 23:59:19

+0

加載我的意思是,當我們可以得到視圖的所有子視圖。我需要從另一個允許說庫文件中獲取此信息,而不是在項目源代碼中。 – ramo 2012-04-04 00:01:41

回答

35

如果你有一個視圖控制器的一個實例,你可以問它:

viewController.isViewLoaded 
+0

然後我應該在哪裏檢查並檢查isViewLoaded。因此,調用applicationDidFinishLaunching並調用第一個視圖的viewdidload。我在哪裏可以檢查isViewLoaded – ramo 2012-04-04 00:35:07

3

我不完全清楚你的意思是「加載」。根據您的定義「裝」,你可以:

  • 檢查的觀點是nil(加載的最寬泛的定義,儘管這將取決於別人nilling出來的觀點,當它被釋放,免得你得到一個EXC_BAD_ACCESS)。

  • 檢查[view superview]查看視圖是否有超級視圖。

  • 檢查[view window]看的視圖是否是一個窗口

  • 假設有一個相應的UIViewController,查詢控制器的isViewLoaded屬性,以查看它是否已加載(爲是「在屏幕上」的先決條件)的一部分進入記憶。這對於查看生命週期問題特別有幫助。

可能還有其他的解釋,你可以檢查「裝載」和其他東西,但這些都是我的頭頂第一件事情。

0

不太清楚你的用例,但如果你只是想查詢視圖層次結構,這可能會有所幫助。

- (UIView *)viewWithTag:(NSInteger)tag 
  1. 代碼的所有您有興趣,爲前視圖。標記某些感興趣的視圖; 「ImportantView1」, 「ImportantView2」,...

  2. 你需要一個(父),以便使上述API調用

  3. 呼叫查詢(父)視圖和所有子視圖。

  4. 按您的自定義標籤名稱過濾視圖。 (如果標籤與「ImportantView」開頭)