use*_*888 3 methods foreground viewdidload ios
当我的应用程序从后台进入前台时,是否有一种简单的方法来调用方法?我的程序在viewDidLoad方法中调用了一个方法"nowYouSeeMe",这在第一次运行应用程序时效果很好.当我使用应用程序然后按下主页按钮时,它会像往常一样移动到背景.现在,当我按下应用程序图标并将其带到前台时,我基本上希望它再次调用nowYouSeeMe方法.
-(void)nowYouSeeMe{
NSLog(@"I'm back");
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗??
iCa*_*mba 10
正如已经提到的那样,- (void)applicationDidBecomeActive:(UIApplication *)application;在App Delegate中,但是大多数情况下,您需要的信息不在您的应用代理中,而是您的视图控制器.因此你可以使用NSNotificationCenter.在您的app委托中,您可以执行以下操作:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center postNotification:[NSNotification notificationWithName:@"appDidEnterForeground" object:nil]];
Run Code Online (Sandbox Code Playgroud)
现在,您可以在UIViewController设置代码中设置侦听器:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(appDidEnterForeground) name:@"appDidEnterForeground" object:nil];
Run Code Online (Sandbox Code Playgroud)
现在,appDidEnterForeground只要应用程序进入前台,就会在视图控制器上调用该方法.
但您甚至不需要自己发布通知,因为它已在UIApplication中定义.如果向下滚动的文档(UiApplication类参考)你看到所有的通知宣布UIApplication.h,你的情况UIApplicationWillEnterForegroundNotification.注意之间的差异UIApplicationWillEnterForeground,并UIApplicationDidEnterForeground大部分时间您要使用,但是UIApplicationWillEnterForeground,刚刚设置好一切,并显示应用程序时做好准备.
当然,您应该为notifcationname定义一个常量,如果您不再需要观察者,请将其删除.
编辑:您也可以在问题中使用@selector(nowYouSeeMe),错过了