Objective c 当应用程序重新打开时执行代码
我有一个单视图应用程序。当我点击home按钮并“最小化”应用程序时,我希望在用户重新打开它时能够执行代码 由于某些原因,当我最小化并重新打开应用程序时,ViewDidDisplay和ViewWillDisplay不会执行 有什么建议吗 提前谢谢Objective c 当应用程序重新打开时执行代码,objective-c,ios,multitasking,Objective C,Ios,Multitasking,我有一个单视图应用程序。当我点击home按钮并“最小化”应用程序时,我希望在用户重新打开它时能够执行代码 由于某些原因,当我最小化并重新打开应用程序时,ViewDidDisplay和ViewWillDisplay不会执行 有什么建议吗 提前谢谢 萨达姆之所以这样做,是因为你没有重新绘制你的视图。改为在AppDelegate中使用应用程序将进入前台。这对您来说应该很好。您可以在中的应用程序委托中执行代码 - (void)applicationDidBecomeActive:(UIApplicati
萨达姆之所以这样做,是因为你没有重新绘制你的视图。改为在AppDelegate中使用应用程序将进入前台。这对您来说应该很好。您可以在中的应用程序委托中执行代码
- (void)applicationDidBecomeActive:(UIApplication *)application
或者注册以观察UIApplicationIDBECOMEACTIVENTIfication
通知并执行代码作为响应
应用程序委托中还有通知UIApplicationWillEnterForegroundNotification
和方法-(void)applicationWillEnterForeground:(UIApplication*)application
要连接通知,请在适当的位置添加此项
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didBecomeActive:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
定义一个对应的方法
- (void)didBecomeActive:(NSNotification *)notification;
{
// Do some stuff
}
然后别忘了在适当的时候让自己成为一个观察者
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didBecomeActive:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
讨论
您很可能只希望您的viewController在当前处于活动状态时响应事件,因此注册通知的好地方是viewDidLoad
,然后将自己作为观察者移除的好地方是viewDidUnload
如果你想运行与你的
viewdide:
方法相同的逻辑,那么把它抽象成另一个方法,让viewdide:
和响应通知的方法调用这个新方法。这是因为苹果公司实施了“多任务”,当你再次启动应用程序时,它们会被完全重新加载,就像你从未关闭过它们一样。因此,没有理由调用ViewDid
您可以实现
- (void)applicationWillEnterForeground:(UIApplication *)application
在那里做你想做的事。或者在视图控制器中注册通知UIApplicationWillEnterForegroundNotification
。在viewDidLoad中执行此操作:
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myAppWillEnterForeground)
name:UIApplicationWillEnterForegroundNotification object:nil];
当然,实现指定的选择器并在那里执行您想要的操作。我不确定@Paul.s的答案如何执行OP请求,因为注册
uiapplicationidbecomeactivityfication
将执行两次:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourMethodName1) name:UIApplicationWillEnterForegroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourMethodName2) name:UIApplicationDidBecomeActiveNotification object:nil];
明亮的工作完美。通知中心看起来很强大!我们应该花些时间来更详细地了解这一点。谢谢它当然是强大的,但它也可以用来创建一个令人讨厌的无法维护的逻辑蜘蛛网,所以请记住这一点。