有没有办法在不查看视图控制器的源代码(例如viewDidLoad,viewWillAppear等)的情况下查看视图是否已加载?
或者如何在运行时/动态地检查是否加载了任何视图以获取子视图。
有没有办法在不查看视图控制器的源代码(例如viewDidLoad,viewWillAppear等)的情况下查看视图是否已加载?
或者如何在运行时/动态地检查是否加载了任何视图以获取子视图。
如果您有一个视图控制器实例,可以询问它:
viewController.isViewLoaded
我不是非常清楚你所说的“loaded”是什么意思。基于你对“loaded”的定义,你可以采取以下措施之一:
检查view是否为nil
(最广泛的“loaded”定义,但这会依赖于在解除分配时将视图设为空值,否则可能会得到EXC_BAD_ACCESS)。
检查[view superview]
以查看视图是否有superview。
检查[view window]
以查看视图是否属于窗口(成为“在屏幕上”先决条件)。
假设存在相应的UIViewController,则查询控制器的isViewLoaded
属性,以查看它是否已将视图加载到内存中。这尤其有助于处理视图生命周期问题。
可能还有其他“loaded”的解释和其他可供检查的内容,但这些是我首先想到的。
我不太确定你的使用情况,但如果你只想查询视图层次结构,这可能会有所帮助。
- (UIView *)viewWithTag:(NSInteger)tag
给你感兴趣的所有视图打标签,例如:在感兴趣的某些视图上打上标签;“ImportantView1”,“ImportantView2”...
你需要一个(父)视图来调用上述API
该调用将查询(父)视图和所有子视图。
按自定义标签名称过滤视图。(如果标签以“ImportantView”开头)