当我的应用程序中断时,例如接听电话,屏幕锁定或切换应用程序,我需要它以不同的方式响应,具体取决于中断时屏幕上的哪个视图/视图控制器。
在我的第一个视图控制器中,我们称之为VCA,我有这个
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(doSomething)
name:UIApplicationWillResignActiveNotification
object:NULL];
-(void)doSomething{
//code here
};
在VCB中我有
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(doSomethingElse)
name:UIApplicationWillResignActiveNotification
object:NULL];
-(void)doSomethingElse{ //code here };
但是如果VCB在屏幕上,或任何后续视图控制器(vcc,vcd,vce),并且屏幕被锁定,它将只响应VCA中定义的doSomething方法。即使我在VCA之后的一个视图控制器中没有UIApplicationWillResignActiveNotification,它仍然会响应VCA中定义的doSomethign方法。
有什么方法可以让我的应用程序响应不同,具体取决于进入后台时屏幕上的哪个视图?
答案 0 :(得分:2)
这适用于 applicationDidEnterBackground
if ([navigationViewController.visibleViewController isKindOfClass:[YourClass class]]) {
//your code
}
答案 1 :(得分:0)
你是说你的doSomethingElse函数永远不会被调用?你确定这个,也许除了doSomething之外它还会被调用吗?我想是的。
在doSomething和doSomethingElse中的哪种情况下,如果当前未加载,您可以添加支票作为忽略通知的第一行:
if ([self isLoaded] == NO)
return;
答案 2 :(得分:0)
收到通知后,如何检查当前的visibleViewController?如果它与你的接收器匹配而不是执行动作,否则忽略它。