2011-03-15 40 views
0

我需要从应用程序委托检测主UIView(用户实际上正在观看的视图)已更改。检测UIView修改

  1. 他有一个iOS通知?
  2. 如果不是,我可以从一个计时器执行一个函数......但是如何检查主视图(用户实际观看的视图)是否发生了变化?

-Fred

+1

@ user31 - 你改变了什么意思 - 就像它的框架发生了变化,子视图被添加或删除了,还是其他的东西? – Anurag 2011-03-15 07:16:31

+0

我的意思是“改变”:我的应用程序是由每个tabbar的tabbarcontroller + navControllers组成...每个NavigationController由ViewControllers组成...我想从我的计时器代码中检测到currentView(用户正在观看)已被修改从最后一个计时器滴答... – fvisticot 2011-03-15 19:29:13

回答

-1

视图可以改变的唯一方法是,如果您的应用程序在一定程度上改变它。

+0

谢谢你的回答...但我想要做什么......我想在任何XCode项目中添加一个类,并且这个类正在做出一个行动,如果她正在检测视图已经改变(没有任何项目类的知识)。我的想法是在这个额外的类中包含一个计时器,用于检查当前显示的视图是否已经改变...希望这个描述对你来说更加清晰。 – fvisticot 2011-03-17 07:07:11

0

如果你希望它是通用的,你可以尝试使用通知。

在你想要的信号及其变化“失踪”,你可以在dealloc方法

-(void)dealloc{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ViewChanged" object:nil]; 
} 

,并在正在响应您可以监听“ViewChanged”改变的代码添加您的通知任何的UIView通知。您可以使用此代码执行此操作:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewChanged) name:@"ViewChanged" object:nil]; 

-(void)viewChanged{ 
// do what ever you want after the view has changed 
} 
+0

感谢您的回答,但实际上我想避免修改每个视图以添加此修改...并且如果我的应用程序正在使用第三方库,则无法添加此通知。这就是为什么我想用一个计时器来分析2个刻度之间的变化...... – fvisticot 2011-03-21 19:30:09

0

您应该为UIViewController类调整选择器。就像你可以调整viewWillAppear到你创建的customViewWillAppear。因此,当应用程序将生成viewWillAppear的调用时,您调用的方法(customViewWillAppear)将被调用。所以,你可以识别出,用户已经改变了屏幕。

不要忘记调用实际的方法来执行写在viewWillAppear方法中的东西。