如何将UIPageViewController的子视图控制器中的值保存到应用程序的其他位置?

问题描述 投票:0回答:1

我有一个包含多个视图控制器的UIPageViewController,每个视图控制器都有问题供用户响应。一旦这些问题得到解答,我想在本地某处保存值,以便稍后我可以创建一个填充了这些值的PDF。做这个的最好方式是什么?我会使用NSUserDefaults吗?

ios swift uipageviewcontroller
1个回答
1
投票

这取决于您希望数据如何持久化。如果您希望数据持续用户的生命,即使从设备中删除了应用程序,您显然也需要将其存储在客户端之外,例如数据库(即Realm,CoreData)。如果您希望数据保持应用程序本身的生命周期,您将继续用来塑造用户体验的数据,您可以使用UserDefaults,但这似乎不是您想要做的。如果您只是希望数据能够持久保存应用程序实例的生命周期,请将其存储在常规属性中。

我怀疑,无论出于何种原因,第三种选择都是你的选择。如果是这样,我建议创建一个模型对象,作为父视图控制器的实例属性(所有页面视图控制器都可以引用)...

class SurveyAnswers {

    var userName: String?
    var userAge: Int?
    var favoriteSauce: PizzaSauce?
    var livesWithCats: Bool?

}

...并简单地使用协议/委托模式将数据从子节点传递给父节点,父节点将更新该节点中的属性(只要它们更新该对象的相同实例)。然后,当您准备好准备PDF文件时,只需询问父对象,该对象的属性已由子视图控制器设置。

如果你对它没问题,可以使用共享的AppDelegate作为存储和检索这些数据的方法。我只是提醒我不要习惯这种习惯,但根据你的应用整体而言,这可能是一个完全可以接受的选择。

一般经验法则:在目标对象中设置属性以向前传递数据并使用委托向后传递数据。

© www.soinside.com 2019 - 2024. All rights reserved.