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议手动调用viewWillAppear
和viewWillDisappear
方法。
我的viewWillDisappear
方法会退出任何键盘,如果显示,当我的应用程序进入后台,它加载了一个启animation面准备应用程序重新进入前台时(有一些逻辑,我需要做的,以确定用户显示在重新启动应用程序,我可以在启animation面下执行此操作)。
viewWillDisappear
不会被调用,当应用程序进入后台,以确保没有键盘出现在我的启animation面我在applicationDidEnterBackground
方法中调用viewWillDisapper
。 我想这也取消了我的事件。
通过添加viewWillAppear
到我的applicationDidEnterForeground
方法我的事件再次开始发射。 经验教训,我会重构这个,所以我不会手动调用这些事件。
谢谢您的帮助。