Objective c 如何检查视图是否处于InvierArchy状态?
例如,如果viewController的一个视图在viewHierarchy中,而我刚刚下载完内容,那么我想快速更新内容。如果self.view不在viewHierarchy中,我想推迟更新 我想,我可以添加一个布尔变量来表示它,然后将它放在viewwillbeen和viewwillbeside上 我还可以扫描窗口,查看UIView是否在viewHierarchy中Objective c 如何检查视图是否处于InvierArchy状态?,objective-c,xcode4.5,Objective C,Xcode4.5,例如,如果viewController的一个视图在viewHierarchy中,而我刚刚下载完内容,那么我想快速更新内容。如果self.view不在viewHierarchy中,我想推迟更新 我想,我可以添加一个布尔变量来表示它,然后将它放在viewwillbeen和viewwillbeside上 我还可以扫描窗口,查看UIView是否在viewHierarchy中 是否有更直接的方法?在视图控制器中: if (self.isViewLoaded && self.view.win
是否有更直接的方法?在视图控制器中:
if (self.isViewLoaded && self.view.window != nil) {
// view is in a view hierarchy and should be updated
}
我认为只有在视图加载完成后才会触发viewDidLoad。因此,我认为您可以在viewDidLoad本身中添加必要的功能 要检查它是否不在视图层次结构中,这就足够了:
// From a UIViewController sub-class
if !self.isViewLoaded {
// view is not in the view hierarchy
}
是否需要检查是否已加载视图?假设self.view.window在未加载视图的情况下必须为零。首次访问self.view时也会加载视图,对吗?是的,如果尚未加载视图,则在调用
self.view
时会加载该视图。如果视图尚未加载,那么它肯定不在屏幕上。如果它不在屏幕上,您想推迟更新。如果要推迟更新,为什么要加载视图?我们可以在iOS 9之后使用self.viewiLoaded.window
,这是不正确的。视图可能已加载,但尚未添加到视图层次结构中(例如,在UIViewController
的初始值设定项中访问self.view
之后)。