Push segue每次发生时都会创建一个新实例。我怎么阻止它?

时间:2012-11-29 13:20:25

标签: iphone xcode ipad uinavigationcontroller segue

我有一个主UINavigationController,可以推送到第二个视图控制器。第二个视图有一个返回原始的后退按钮。在第二个ViewController上调用viewDidLoad时,会发生大量初始化,包括从文件加载数据和对背景噪声进行采样。这只需要完成一次,但只有在第二个视图实际加载时才需要。我的问题是每次push segue发生时,都会创建第二个视图的全新实例,并再次发生整个初始化过程。如何保持单个第二个视图,并在后续推送段发生时重新显示它?

1 个答案:

答案 0 :(得分:2)

我建议你采用不同的方式。让iOS处理ViewController的生命周期,并将数据与昂贵的初始化分离。您可以创建一个单独的类来完成工作,也可以由根视图控制器拥有并传递给第二个。我不认为故事板会以你想要的方式运行,听起来并不像是有充分的理由在这上面对抗iOS。

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