3

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

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

....

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

2 回答 2

8

您的问题是,在单个视图控制器应用程序中,在发布 UIApplicationDidBecomeActiveNotification 之后才会调用 viewDidLoad 。因此,您是在第一次发生通知后注册的。应该捕获后续激活,例如如果您切换应用程序并返回,但您会错过第一个。

于 2013-01-18T20:11:38.460 回答
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。

于 2017-08-07T19:16:21.507 回答