viewDidAapp不会在应用程序进入前景后再次开启

我已经在我的iPhone应用程序代码中追踪了一个问题,并不总是触发viewDidAppear方法。 当您启动应用程序事件触发预期。 但是,如果我closures应用程序使用能够多任务处理,并重新打开我的viewDidAppear事件不再触发。

我的意见是从尼布加载,我使用viewDidUnload清理(释放和零所有网点)。 我的意见是嵌套在侧面和标签栏然后导航控制器。 我看起来像事件没有正确连接时,笔尖重新加载。 任何想法,我做错了/失踪,我怎么能解决这个问题?

提前致谢。

更新我不是说应用程序第一次进入前台时事件不会被解雇。 我的意思是事件再也不会发生。 即使在选项卡之间切换或移动导航视图时也是如此。

例:

- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; NSLog(@"viewDidAppear called"); } 

这段代码放在两个视图中,每个视图都在不同的选项卡上。 每次我在标签之间切换“viewDidAppear called”被写入日志。 当我closures并重新打开应用程序和切换标签之间不再发生。 其他button事件正常启动。

顺便说一句, viewDidUnload方法真的很糟糕的命名顺便说一句 – 它不是一个“相反”的viewDidLoad ,只有在内存不足的情况下调用,并且由于在那个时候不可见,该控制器的视图被卸载。

(原文,不如此相关答案:)

请参阅我对这个类似问题的回答:

为什么viewWillAppear不会在应用程序从后台返回时被调用?

基本上,你的UIViewController的视图被添加到应用程序的UIWindow层次后, viewDidAppear被调用。 背景,然后恢复应用程序不会改变你的观点,所以viewDidAppear不会被调用 – 这是正确的行为,而不是一个错误。 查看UIViewController的API文档。

find了。

虽然不是新的编程,我是新的iPhone开发。 在研究这个问题时,我发现不build议手动调用viewWillAppearviewWillDisappear方法。

我的viewWillDisappear方法会退出任何键盘,如果显示,当我的应用程序进入后台,它加载了一个启animation面准备应用程序重新进入前台时(有一些逻辑,我需要做的,以确定用户显示在重新启动应用程序,我可以在启animation面下执行此操作)。

viewWillDisappear不会被调用,当应用程序进入后台,以确保没有键盘出现在我的启animation面我在applicationDidEnterBackground方法中调用viewWillDisapper 。 我想这也取消了我的事件。

通过添加viewWillAppear到我的applicationDidEnterForeground方法我的事件再次开始发射。 经验教训,我会重构这个,所以我不会手动调用这些事件。

谢谢您的帮助。