【问题标题】:Push segue creates a new instance each time it happens. How do I stop that?Push segue 每次发生时都会创建一个新实例。我该如何阻止它?
【发布时间】:2012-11-29 13:20:24
【问题描述】:

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

【问题讨论】:

    标签: iphone xcode ipad uinavigationcontroller segue


    【解决方案1】:

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

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

    【讨论】:

    • 我很高兴它成功了。你介意接受我的回答吗?我的自我价值感来源于我的 SO 声誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多