首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当applicationDidBecomeActive被调用时,如何告诉活动视图控制器?

当applicationDidBecomeActive被调用时,如何告诉活动视图控制器?
EN

Stack Overflow用户
提问于 2012-04-28 07:36:45
回答 4查看 20.5K关注 0票数 20

我觉得我错过了一个小把戏...

我只想在applicationDidBecomeActive被调用时调用当前活动视图控制器上的viewDidLoad或viewDidAppear,这样当应用程序从后台再次启动时,我就可以重置一些动画或其他东西。我的一些观点并不关心,但其他人确实需要知道。

我使用的是故事板,我的应用委托文件有标准的功能--但都是空的。例如,didFinishLaunchingWithOptions只返回YES,不做其他任何事情。我猜,Storyboard会自动做所有的事情。

那么,我该如何从我相当空白的、无信息的应用程序代理中与当前的视图控制器对话呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-28 07:53:22

我建议使用通知。

在你的应用程序代理的applicationdidBecomeActive方法中,放入以下代码:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] postNotificationName:@"appDidBecomeActive" object:nil];

在当前活动的视图控制器的init方法中,订阅通知。

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(updateStuff)        
                                             name:@"appDidBecomeActive" 
                                           object:nil];

在你的控制器中实现"updateStuff“方法,当应用程序激活时,你应该能够做任何你想做的事情。

票数 23
EN

Stack Overflow用户

发布于 2012-06-12 09:53:46

操作系统不是从应用代理发送通知,而是自动发送通知,您可以观察到:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self
                                      selector:@selector(initSongInfo)
                                      name:UIApplicationDidBecomeActiveNotification
                                      object:nil];

当然,确保在dealloc方法之前或内部的某个时间停止观察,方法是调用:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] removeObserver:self 
                                      name:UIApplicationDidBecomeActiveNotification 
                                      object:nil];
票数 55
EN

Stack Overflow用户

发布于 2012-04-28 07:50:24

您可以从AppDelegate发送一个ViewController并在您的ViewController中订阅它,而不是试图跟踪哪个NSNotification是最新的。这样,视图控制器就可以跟踪它是否需要调用viewDidAppear。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10359186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档