iOS Segue ViewController 缓存

Posted

技术标签:

【中文标题】iOS Segue ViewController 缓存【英文标题】:iOS Segue ViewController Caching 【发布时间】:2011-12-17 20:57:10 【问题描述】:

在我的 ios 5 项目中,使用 ARC 和 Storyboards,我觉得我遇到了一个奇怪的行为。我想确认我所遇到的实际上是否是默认行为以及是否可以修改。

我在故事板上有一个NavigationController 和一个RootViewController。这些都与特定的子类无关。在RootViewController 上,我有一个按钮连接到ListingViewController 的segue,它对Web 服务进行静态调用(不会因用户输入而异)。我注意到 - 至少在模拟器中 - 当我按下按钮时,返回并再次按下它,第二次加载速度不切实际!似乎 ListingViewController 正在被缓存。

这应该发生吗?我能做些什么来解决它?

【问题讨论】:

UIStoryboard 将缓存视图控制器。如果您希望每次显示视图控制器时都发生动作,则必须在 viewWillAppear 中执行此操作,如 Caleb 的回答中所述。 【参考方案1】:

这应该发生吗?我能做些什么来解决它?

为什么你认为它坏了?我还没有调查故事板是否保留了它的视图控制器,但如果确实如此,那就不足为奇了。

如果您正在做一些事情,例如在 -viewDidLoad 中发出 Web 服务请求,但您希望每次视图出现时都发生,您应该将其移至 -viewWillAppear-viewDidAppear

【讨论】:

以上是关于iOS Segue ViewController 缓存的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 中的 ViewController Undo Segue

iOS Segue ViewController 缓存

Segue 没有在 viewController 中执行

故事板 Segue 与委派。哪种方法更适合在 ViewController 之间传递数据

Xcode 6 Segue 与 UINavigationItem

IOS。 segue.destinationViewController 对象与加载的Controller不同