检查视图是否在运行时加载

时间:2012-04-03 23:35:03

标签: iphone objective-c ios view

有没有办法在没有检查该视图控制器的源代码的情况下看到加载视图(例如,viewDidLoad,viewWillAppear等)

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

3 个答案:

答案 0 :(得分:40)

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

viewController.isViewLoaded

答案 1 :(得分:3)

我对“装载”的含义并不完全清楚。根据您对“已加载”的定义,您可以:

  • 检查视图是否为nil(加载的最广泛定义,但这取决于某人在取消分配时将视图缩小,以免获得EXC_BAD_ACCESS。)

    < / LI>
  • 检查[view superview]以查看视图是否具有超级视图。

  • 检查[view window]以查看视图是否属于窗口(是“在屏幕上”的先决条件)

  • 假设有一个相应的UIViewController,查询控制器的isViewLoaded属性以查看它是否已将视图加载到内存中。这尤其有助于查看生命周期问题。

可能还有其他一些你可以检查的“装载”的解释,但这些是我头脑中的第一件事。

答案 2 :(得分:0)

对您的用例不太确定,但如果您只想查询视图层次结构,这可能会有所帮助。

- (UIView *)viewWithTag:(NSInteger)tag
  1. 标记您感兴趣的所有观看次数,例如。标记某些感兴趣的视图; “ImportantView1”,“ImportantView2”,...

  2. 您需要(父)视图才能进行上述API调用

  3. 调用查询(父)视图和所有子视图。

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