Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何检查视图是否处于InvierArchy状态?_Objective C_Xcode4.5 - Fatal编程技术网

Objective c 如何检查视图是否处于InvierArchy状态?

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

例如,如果viewController的一个视图在viewHierarchy中,而我刚刚下载完内容,那么我想快速更新内容。如果self.view不在viewHierarchy中,我想推迟更新

我想,我可以添加一个布尔变量来表示它,然后将它放在viewwillbeen和viewwillbeside上

我还可以扫描窗口,查看UIView是否在viewHierarchy中


是否有更直接的方法?

在视图控制器中:

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
之后)。