1

我有一个 mainUINavigationController可以将 segue 推送到第二个视图控制器。第二个视图有一个返回按钮,可以返回到原始视图。当viewDidLoad在第二个 ViewController 上调用时,会发生很多初始化,包括从文件中加载数据,以及背景噪声的采样。这只需要执行一次,但只有在第二个视图实际上已加载时才需要。我的问题是每次 push segue 发生时,都会创建第二个视图的全新实例,并且整个初始化过程会再次发生。我如何才能保持第二个视图并在随后的推送序列发生时重新呈现它?

4

1 回答 1

2

我建议你换一种方式。让 iOS 处理 ViewController 的生命周期,然后将数据和昂贵的初始化与它解耦。您可以创建一个单独的类来完成这项工作,或者它可以由根视图控制器拥有并传递给第二个。我不认为 Storyboards 会按照你想要的方式运行,而且听起来也没有充分的理由在这方面与 iOS 抗衡。

或者您可以使用 iOS5 之前的方式来执行此操作,并使用实例化您的第二个 ViewControllerinitWithNibName:bundle并将其推送到导航堆栈中pushNavigationItem:animated

于 2012-11-30T07:29:33.077 回答