我在RootViewController的viewDidLoad函数中使用以下代码。 在AppDelegate中调用ApplicationDidBecomeActive函数,但RVC似乎不会成为通知,因为函数someMethod未被调用。 有谁知道问题是什么?
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:UIApplicationDidBecomeActiveNotification object:nil];
....
-(void)someMethod:(NSNotification *)notification {
NSLog(@"OK");
}
答案 0 :(得分:8)
您的问题是,在单个视图控制器应用程序中,在发布UTEpplicationDidBecomeActiveNotification之后才会调用viewDidLoad。因此,您是在第一次发生通知后注册。应该捕获后续激活,例如,如果您切换应用并返回,但您将错过第一个。
答案 1 :(得分:0)
如果你想为UIApplicationDidBecomeActiveNotification
添加一个也将在第一次启动时触发的观察者,你应该在函数中添加观察者
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
,如下所示:
[[NSNotificationCenter defaultCenter]
addObserver:self.window.rootViewController
selector:@selector(someMethod:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
(在设置根视图控制器之后)。
这是有效的,因为在应用程序的初始启动时,appDelegate中的didBecomeActive之前会调用didFinishWithLaunching。