Pau*_*aul 48 iphone objective-c
我正在开发一个应用程序来处理来自网络的持续传入数据流,并为用户提供许多不同的UIView来查看该数据.
当某些模型数据根据来自网络的传入流进行更新时,我访问相关的UIViewController或UITableViewController,并在其上执行-setNeedsDisplay(在UIViewController的情况下)或-reloadData(在UITableViewController的情况下).
有没有办法检查当前是否正在显示给定的UIView(除了刚被加载)以便我只做--setNeedsDisplay或-reloadData如果用户当前正在查看该UIView?看起来在用户当前没有看到的视图上调用-setNeedsDisplay或reloadData会浪费处理能力,并且不利于电池寿命.当用户最终切换到之前已更新的视图时,在-viewWillAppear上执行-setNeedsDisplay或reloadData会更有意义.
谢谢
Pau*_*aul 135
在做了一些研究之后,我在这里发布的另一个问题中找到了这个答案......这似乎是最好的方法......
如果视图当前可见,则视图的窗口属性为非零,因此请检查视图控制器中的主视图:
if (viewController.isViewLoaded && viewController.view.window){
// viewController is visible
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ese 14
将它添加到您的控制器或UIViewController的子类,然后您可以进一步子类化.使用属性或变量访问它:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
visible = YES;
}
- (void)viewWillDisappear:(BOOL)animated
{
visible = NO;
[super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
55732 次 |
最近记录: |