检查视图在运行时加载

问题描述:

有什么办法,我可以看到一个视图加载不检查视图控制器的源代码(例如,viewDidLoad中,viewWillAppear中,等)检查视图在运行时加载

或如何我在运行时/动态检查是否加载了任何视图来获取子视图。

+0

例如,我想等到我的看法是加载,然后获取该视图的所有子视图,并通过具有这些UIViews的属性和信息,使用类似KIF步骤和场景的方式开始对它们进行测试。 我想等待视图加载,但然后我怎么能得到 UIViews的属性,因为我不想只是使用辅助功能标签 – ramo 2012-04-03 23:59:19

+0

加载我的意思是,当我们可以得到视图的所有子视图。我需要从另一个允许说库文件中获取此信息,而不是在项目源代码中。 – ramo 2012-04-04 00:01:41

如果你有一个视图控制器的一个实例,你可以问它:

viewController.isViewLoaded 
+0

然后我应该在哪里检查并检查isViewLoaded。因此,调用applicationDidFinishLaunching并调用第一个视图的viewdidload。我在哪里可以检查isViewLoaded – ramo 2012-04-04 00:35:07

我不完全清楚你的意思是“加载”。根据您的定义“装”,你可以:

  • 检查的观点是nil(加载的最宽泛的定义,尽管这将取决于别人nilling出来的观点,当它被释放,免得你得到一个EXC_BAD_ACCESS)。

  • 检查[view superview]查看视图是否有超级视图。

  • 检查[view window]看的视图是否是一个窗口

  • 假设有一个相应的UIViewController,查询控制器的isViewLoaded属性,以查看它是否已加载(为是“在屏幕上”的先决条件)的一部分进入记忆。这对于查看生命周期问题特别有帮助。

可能还有其他的解释,你可以检查“装载”和其他东西,但这些都是我的头顶第一件事情。

不太清楚你的用例,但如果你只是想查询视图层次结构,这可能会有所帮助。

- (UIView *)viewWithTag:(NSInteger)tag 
  1. 代码的所有您有兴趣,为前视图。标记某些感兴趣的视图; “ImportantView1”, “ImportantView2”,...

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

  3. 呼叫查询(父)视图和所有子视图。

  4. 按您的自定义标签名称过滤视图。 (如果标签与“ImportantView”开头)