未调用UIApplicationDidBecomeActiveNotification

时间:2012-07-01 11:03:10

标签: objective-c nsnotificationcenter

我在RootViewController的viewDidLoad函数中使用以下代码。 在AppDelegate中调用ApplicationDidBecomeActive函数,但RVC似乎不会成为通知,因为函数someMethod未被调用。 有谁知道问题是什么?

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(someMethod:)
                                         name:UIApplicationDidBecomeActiveNotification object:nil];

....

-(void)someMethod:(NSNotification *)notification {
    NSLog(@"OK");
} 

2 个答案:

答案 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。

相关问题