例如,如果 viewController 的视图在 viewHierarchy 中,而我刚刚完成下载内容,我想快速更新内容。如果 self.view 不在 viewHierarchy 中,我想推迟更新。
我想,我可以添加一个布尔变量来表明这一点,并将其放在 viewWillAppear 和 viewWillDisappear 上。
我还可以扫描窗口并查看 UIView 是否在 viewHierarchy 中。
有没有更直接的方法?
例如,如果 viewController 的视图在 viewHierarchy 中,而我刚刚完成下载内容,我想快速更新内容。如果 self.view 不在 viewHierarchy 中,我想推迟更新。
我想,我可以添加一个布尔变量来表明这一点,并将其放在 viewWillAppear 和 viewWillDisappear 上。
我还可以扫描窗口并查看 UIView 是否在 viewHierarchy 中。
有没有更直接的方法?
As of iOS 9.0, in Swift, you can do this in your view controller:
if viewIfLoaded?.window != nil {
// view should be updated
}
or this if you want to actually use the view:
if let view = viewIfLoaded, view.window != nil {
// update view
}
For older versions of iOS, in Objective-C:
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
}