通过 AppDelegate applicationWillEnterForeground 从头开始​​重新加载 UIViewController

Posted

技术标签:

【中文标题】通过 AppDelegate applicationWillEnterForeground 从头开始​​重新加载 UIViewController【英文标题】:Reloading UIViewController from scratch via AppDelegate applicationWillEnterForeground 【发布时间】:2014-11-08 12:58:06 【问题描述】:

在我的 XCode 项目中,我正在寻找一个非常简单的解决方案: 当applicationWillEnterForeground 被调用时,我希望我的主(也是唯一的)viewcontroller 重新加载,就好像应用程序从头开始启动一样,原因是我希望它重新计算当时可能已经改变的一些事情,而应用程序在后台,以响应应用程序启动时检测到的时间变化。我希望这种情况发生,而不是视图只是以最后一次看到的状态重新出现

viewcontroller 被命名为 TMViewController

我找到的答案只是告诉我我必须在 AppDelegate 的 applicationWillEnterForeground 部分重新加载 viewcontroller,但不知道如何执行此操作

我找到了解释如何从网络重新加载各种元素、标签、网络视图和数据的答案。这些比我需要的要复杂得多,我真的看不到大海捞针

我需要做的只是 applicationWillEnterForeground 重新加载 viewcontroller 就好像它的 viewDidLoad 已被调用(我知道这本身不是一个好的解决方案,不是说我知道该怎么做!)

我想简而言之,我很难理解在 AppDelegateviewcontroller 文件的 h & m 文件中需要做什么来完成此操作

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:
self.window.rootViewController = [[TMViewController alloc]intWithNibName:@"myNib" bundle:nil];

【讨论】:

但我应该把它放在哪里? in - (void)applicationWillEnterForeground:(UIApplication *)application - 根据您的问题,“我找到的答案简单地告诉我,我必须在 AppDelegate 的 applicationWillEnterForeground 部分重新加载视图控制器,但不是如何做到这一点”:) 我试过了,但我得到了:!No visible@interface for 'TMViewController' 声明了选择器'intWithNibName:bundle:' 我意识到我可能在其他地方遗漏了一些非常简单的东西,整个应用程序都是编写的,但我真的坚持这一点。

以上是关于通过 AppDelegate applicationWillEnterForeground 从头开始​​重新加载 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

Push Notification 的后台处理

Swift 中的应用程序 openURL

推送导航控制器堆栈后视图不显示

通过 UIButton 从 Appdelegate 导航到另一个视图

如何通过 AppDelegate 升级使功能可用于大于 8 的 iOS

如何通过 TabBarController => NavbarController 从 Appdelegate 呈现视图控制器